Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP str_replace未按预期工作,返回多个值_Php_Str Replace - Fatal编程技术网

PHP str_replace未按预期工作,返回多个值

PHP str_replace未按预期工作,返回多个值,php,str-replace,Php,Str Replace,我有一个使用str_replace函数的代码: $result = mysql_query("SELECT * FROM table"); $contact_link = "<a href=\"/contact-us/\" class=\"inline\" target=\"_parent\">Contact Us</a>"; while($row = mysql_fetch_array($result)) { $answer = str_replace(array("

我有一个使用str_replace函数的代码:

$result = mysql_query("SELECT * FROM table");
$contact_link = "<a href=\"/contact-us/\" class=\"inline\" target=\"_parent\">Contact Us</a>";

while($row = mysql_fetch_array($result))
{
$answer = str_replace(array("contact us","Contact Us","Contact us") , array($contact_link , $contact_link , $contact_link), $row['answer']);
echo $answer;
}
$result=mysql\u查询(“从表中选择*);
$contact_link=“”;
while($row=mysql\u fetch\u数组($result))
{
$answer=str_replace(数组(“联系我们”、“联系我们”、“联系我们”),数组($contact_link、$contact_link、$contact_link),$row['answer']);
回音$答案;
}
但是,当我输入字符串“contact us”时,它返回以下值:

<a href="/contact-us/" class="inline" target="_parent"><a href="/contact-us/" class="inline" target="_parent">Contact Us</a></a>

我不知道为什么。我希望它只通过一个链接而不是两个链接与我们联系。我想可能是因为这两个词都以小写字母开头,所以可能会返回两次?一次用于“联系我们”,一次用于“联系我们”?我已经阅读了这个网站上的搜索结果,并在谷歌上做了一些搜索,但我找不到任何发生相同情况的东西


如果是相关的,我这样做的原因是,当我的客户更新他的网站时,它将返回一个指向他的联系人页面的链接。我想让这三个不同版本的联系人与我们联系,因为格式可能会根据他使用的位置而变化。

您可以使用stru ireplace,它不区分大小写。看看:

您获得此输出的原因是函数首先检查“联系我们”并将其替换为链接,然后查找刚刚添加的“联系我们”,然后再次替换

str_ireplace("contact us", $contact_link, $row['answer']);

您可以使用str_ireplace,它不区分大小写。看看:

您获得此输出的原因是函数首先检查“联系我们”并将其替换为链接,然后查找刚刚添加的“联系我们”,然后再次替换

str_ireplace("contact us", $contact_link, $row['answer']);

真正的问题是你的联系人链接内部文本也被联系人链接本身所取代


因此,当您更换contact us的第一个实例时,您添加了另一个实例。相反,您可以按照Pedryk的建议一次性替换所有联系人。

真正的问题是您的联系人链接内部文本也被联系人链接本身替换


因此,当您更换contact us的第一个实例时,您添加了另一个实例。相反,您可以按照Pedryk的建议,一次完成全部更换。

它的恢复如期进行。阅读文档。由于search和replace都是数组,所以它会从每个数组中获取每个值,并简单地替换它。这在上述情况下已经发生了。如果您想要解决方案,请将预期结果放在问题中。对不起,我认为预期结果显然不是双重封装的Contact Us字符串。我已经按照你善意的建议进行了编辑。它按预期返回。阅读文档。由于search和replace都是数组,所以它会从每个数组中获取每个值,并简单地替换它。这在上述情况下已经发生了。如果您想要解决方案,请将预期结果放在问题中。对不起,我认为预期结果显然不是双重封装的Contact Us字符串。我已经按照你善意的建议进行了编辑。好吧,这完全有道理。我没有意识到它看起来不止一次,也许我应该知道,但现在我知道了!非常感谢,我感谢你的帮助:)好的,这完全有道理。我没有意识到它看起来不止一次,也许我应该知道,但现在我知道了!非常感谢,非常感谢您的帮助:)