【发布时间】:2016-06-02 16:26:56
【问题描述】:
我正在使用 str_replace 替换字符串的子字符串,然而,替换发生了,但文本的其余部分正在消失。
$log_text 的示例是 %%clinicid=1%% 诊所,我们有五个房间。
function strafter($string, $substring) {
$pos = strpos($string, $substring);
if ($pos === false)
return $string;
else
return(substr($string, $pos+strlen($substring)));
}
$log_text = '%%clinicid=1%% clinic has <b>5</b> rooms.';
if (strpos($log_text, '%%clinicid=') !== false) {
$clinicid = strafter($log_text,'%%clinicid=');
$clean_clinicid = str_replace('%%','',$clinicid);
$clinicname = $db->single("SELECT clinic_name FROM dg_clinics WHERE id = :id", array("id"=>"$clean_clinicid"));
$clinic_id_string = '%%clinicid='.$clinicid;
$log_text = str_replace($clinic_id_string,$clinicname,$log_text);
}
上面的代码给出了
啊
只是不是全文,而不是
Aaa 诊所有 5 个房间。
我哪里做错了?
PS。如果我使用%%clinicid=1%%,它可以完美运行,但使用字符串则无法正常工作。
【问题讨论】:
-
$log_text和$clinicid的示例是什么? -
尝试包含一个完整的、有效的问题示例。我应该能够执行它并查看您的输出。
-
@adams 尝试在那里得到你的结果 - eval.in/582124
-
我试过你的代码,但没有用,我已经更新并放了我的完整代码。 @splash58
-
您的代码按照发布的方式工作。您如何尝试使用
$clean_clinicid字符串?例如,我可以想象,如果您尝试在不带引号的 ah HTML 属性字符串中使用它,结果将只是出现空格之前的第一个单词。我的意思是"<input value=$clean_clinicid>",而不是带引号的value='$clean_clinicid'。
标签: php str-replace