Php 搜索文本中的单词并替换它们
我很难找到解决问题的办法 我在一个变量中有这样一个数组:Php 搜索文本中的单词并替换它们,php,Php,我很难找到解决问题的办法 我在一个变量中有这样一个数组: $myarray = Array ( [0] => Orange [1] => Black [2] => White [3] => Yellow [4] => Red ); 基本上,我需要在字符串中搜索数组中的单词,并用相同的单词替换它们,但要使用链接 例如,来自: $string = "My content contains orange and also blue"; 致: $string=“我的内容
$myarray = Array (
[0] => Orange
[1] => Black
[2] => White
[3] => Yellow
[4] => Red
);
基本上,我需要在字符串中搜索数组中的单词,并用相同的单词替换它们,但要使用链接
例如,来自:
$string = "My content contains orange and also blue";
致:
$string=“我的内容包含蓝色”;
您可以使用str\u ireplace,检查
$string=“我的内容包含橙色和黑色”;
$string=str_ireplace(“橙色”)、“”、$string);
编辑
由于@Ericki已编辑了该问题,请使用以下代码实现相同的功能
$myarray = array (
'Orange','Black','White','Yellow','Red'
);
$string = "My content contains Orange, Black, Yellow, Red";
foreach($myarray as $item){
if (strpos($string, $item)) {
$string = str_ireplace($item,"<a href='http://www.example.com/".$item."'>$item</a>",$string);
}
}
var_dump($string);
$myarray=array(
“橙色”、“黑色”、“白色”、“黄色”、“红色”
);
$string=“我的内容包含橙色、黑色、黄色、红色”;
foreach($myarray作为$item){
if(strpos($string,$item)){
$string=str_ireplace($item,“,$string);
}
}
变量转储($string);
您可以使用str\u ireplace,检查
$string=“我的内容包含橙色和黑色”;
$string=str_ireplace(“橙色”)、“”、$string);
编辑
由于@Ericki已编辑了该问题,请使用以下代码实现相同的功能
$myarray = array (
'Orange','Black','White','Yellow','Red'
);
$string = "My content contains Orange, Black, Yellow, Red";
foreach($myarray as $item){
if (strpos($string, $item)) {
$string = str_ireplace($item,"<a href='http://www.example.com/".$item."'>$item</a>",$string);
}
}
var_dump($string);
$myarray=array(
“橙色”、“黑色”、“白色”、“黄色”、“红色”
);
$string=“我的内容包含橙色、黑色、黄色、红色”;
foreach($myarray作为$item){
if(strpos($string,$item)){
$string=str_ireplace($item,“,$string);
}
}
变量转储($string);
使用并使用阵列:
$from = array(
"Orange",
"Black",
"White",
"Yellow",
"Red"
);
$to = array(
'<a href="www.domain.com/orange">orange</a> ',
'<a href="www.domain.com/black">black</a>',
'<a href="www.domain.com/white">white</a>',
'<a href="www.domain.com/yellow">yellow</a>',
'<a href="www.domain.com/red">red</a>'
);
$string = str_ireplace($from, $to, $string);
$from=数组(
“橙色”,
“黑色”,
“白色”,
“黄色”,
“红色”
);
$to=数组(
' ',
'',
'',
'',
''
);
$string=str_ireplace($from,$to,$string);
编辑1:如果在数组中遇到所有字符串,这也会替换它们,这意味着如果字符串中有橙色和黑色,则这两个字符串将被替换。使用数组并使用数组执行:
$from = array(
"Orange",
"Black",
"White",
"Yellow",
"Red"
);
$to = array(
'<a href="www.domain.com/orange">orange</a> ',
'<a href="www.domain.com/black">black</a>',
'<a href="www.domain.com/white">white</a>',
'<a href="www.domain.com/yellow">yellow</a>',
'<a href="www.domain.com/red">red</a>'
);
$string = str_ireplace($from, $to, $string);
$from=数组(
“橙色”,
“黑色”,
“白色”,
“黄色”,
“红色”
);
$to=数组(
' ',
'',
'',
'',
''
);
$string=str_ireplace($from,$to,$string);
编辑1:如果在数组中遇到所有字符串,这也会替换它们,这意味着如果字符串中有橙色和黑色,则这两个字符串将被替换。这可能最好使用。我们可以使用创建一个正则表达式,以交替使用
$myarray
中的每个单词;在组中捕获该词,然后在替换词中使用该词以添加围绕该词的链接:
$string = "My content contains orange and also blue in a blackout";
$string = preg_replace('/\b(' . implode('|', $myarray) . ')\b/i', '<a href="www.domain.com/$1">$1</a>', $string);
echo $string;
$string=“我的内容在断电时包含橙色和蓝色”;
$string=preg_replace('/\b('.intlode('|',$myarray)。')\b/i','$string);
echo$字符串;
输出:
My content contains <a href="www.domain.com/orange">orange</a> and also blue in a blackout
我的内容包含,并且在断电时也是蓝色的
请注意,通过使用带有单词边界的正则表达式(
\b
),我们可以避免无意中用链接替换blackout
中的black
。这可能是最好的方法。我们可以使用创建一个正则表达式,以交替使用$myarray
中的每个单词;在组中捕获该词,然后在替换词中使用该词以添加围绕该词的链接:
$string = "My content contains orange and also blue in a blackout";
$string = preg_replace('/\b(' . implode('|', $myarray) . ')\b/i', '<a href="www.domain.com/$1">$1</a>', $string);
echo $string;
$string=“我的内容在断电时包含橙色和蓝色”;
$string=preg_replace('/\b('.intlode('|',$myarray)。')\b/i','$string);
echo$字符串;
输出:
My content contains <a href="www.domain.com/orange">orange</a> and also blue in a blackout
我的内容包含,并且在断电时也是蓝色的
请注意,通过使用带有单词边界的正则表达式(
\b
),我们可以避免无意中将black
中的black
替换为链接。为什么black
改为blue
而不是链接?@Ericki你怎么能给橙色的链接,链接来自哪里?@Ericki检查我的答案并接受,如果真的helps@Nick事实上,它只是蓝色的。调整了如果一个单词包含在另一个单词中会发生什么情况,例如断电
。它应该被替换吗?为什么黑色
改为蓝色
而没有链接?@Ericki你怎么能给橙色的链接,链接从哪里来?@Ericki检查我的答案并接受,如果是真的helps@Nick事实上,它只是蓝色的。调整了如果一个单词包含在另一个单词中会发生什么情况,例如断电
。是否仍需要替换?您的答案应该是注释,并且应该指向php.net,而不是w3schools。@user3783243原因是什么?@DroidDev我使用str_replace尝试了几次,但都不起作用。我仍然是从PHP开始的,所以我不知道这是为什么。也许是因为它不是简单的数组?另外,我正在使用大量的数组来完成我需要的任务(可能是200个),这是为什么?嗯,我不知道。但有了Stru_ireplace,这是可能的。谢谢你的回答。你的回答应该是评论,应该指向php.net,而不是w3schools。@user3783243原因是什么?@DroidDev我使用str_replace尝试了好几次,但都不起作用。我仍然是从PHP开始的,所以我不知道这是为什么。也许是因为它不是简单的数组?另外,我正在使用大量的数组来完成我需要的任务(可能是200个),这是为什么?嗯,我不知道。但有了Stru_ireplace,这是可能的。谢谢你的回答。如果$from
有超过50条记录,那么我需要手动创建$to
作为复制和编辑吗?@DroidDev哦,是的!实际上是str_ireplace=)抓得好@波斯尼亚编码器完美。它成功了。谢谢你的回答。@Ericki注意到str_replace会做你不想要的“哑”替换。参见Nick发布的“停电”通知示例part@BosnianCoder那么,如果字符串是出售的红色汽车,座椅是蓝色的,会发生什么情况。?你也打算对此进行例外处理吗?如果$from
有超过50条记录,那么我需要手动创建$to
作为复制和编辑吗?@DroidDev哦,是的!实际上是str_ireplace=)抓得好@波斯尼亚编码器完美。它是d