用替换搜索并替换整个字符串

时间:2012-01-27 23:16:28

标签: php regex preg-replace

我有一个字符串,如果找到字符串中的单词,我想用另一个字符串替换。

 $pattern = array("/jacket/i","/jeans/i"); 
 $replacement = array("jacket","jeans"); 
 $string = 'Red jackets'; 
 $replaced_string = preg_replace($pattern, $replacement, $string);

我知道上面的内容不会起作用,但我需要能够使用一系列模式和替换。

我希望$ replacement_string只是“夹克

有人可以指出我的解决方案吗?

由于

3 个答案:

答案 0 :(得分:2)

你知道上面不会怎么样?

查看php开发指南:http://php.net/manual/en/function.preg-replace.php

我引用了值得注意的部分:

<强>图案

  

要搜索的模式。它可以是字符串,也可以是数组   字符串。

<强>替换

  

包含要替换的字符串的字符串或数组。如果此参数是a   string和pattern参数是一个数组,所有模式都是   替换为该字符串。如果是模式和替换参数   是数组,每个模式将被替换替换   对方。如果替换数组中的元素少于   在模式数组中,任何额外的模式都将被替换为空   字符串。

所以所说的基本上就是你可以让你的模式数组成为你想要替换的所有单词。然后你可以使用“夹克”这个词作为你的替代品,然后随后你的模式阵列中的一个单词就会用夹克代替它。

你在使用这个工作时遇到了问题吗?

答案 1 :(得分:1)

也许如果你调整原始代码有点像这样:

$patterns = array("/.*jacket.*/i", "/.*jeans.*/i");
$replacements = array("jacket", "jeans");
$string = 'Red jackets';
$replaced_string = preg_replace($patterns, $replacements, $string);

将那些.*放在那里将清除字符串的其余部分......并且只留下你想要的替换字符串。

答案 2 :(得分:1)

这个怎么样:

$pattern = array("/jacket/i","/jeans/i"); 
$replacement = array("jacket","jeans"); 
$string = 'Red jackets'; 

foreach ($pattern as $i => $p) {
    if (preg_match($p, $string)) {
        $replaced_string = $replacement[$i];
        break;
    }
}

echo $replaced_string;