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