Preg替换为数组中的单词

时间:2012-11-29 09:28:36

标签: php regex

我有一个必须从字符串替换的单词数组,我们称之为$my_replacements。我也有一个字符串,我们称之为$my_string,它可以包含其中的一些值。

现在我有这个:

foreach ($my_replacements as $replacement) {
    $replaced_value = preg_replace("/(^|[\n\r\f\t \.\,])" . $replacement . "([\n\r\f\t \.\,]|$)/iu", '', $my_string);
    if($replaced_value !== $my_string) {
       break;
    }
}

如果在第一次替换时我想退出foreach,那就很好了。但是,如果字符串包含要替换的那些值中的一个或多个,则它将不起作用。如何使用preg_replace查找这些单词,并将它们全部替换掉​​?重要的是我知道是否已经进行了任何替换。

2 个答案:

答案 0 :(得分:4)

您可以将索引数组与preg_replace()一起使用。

<?php
$string = 'The quick brown fox jumped over the lazy dog.';
$patterns = array();
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements = array();
$replacements[0] = 'slow';
$replacements[1] = 'black';
$replacements[2] = 'bear';
echo preg_replace($patterns, $replacements, $string);
?>

以上示例将输出:

The slow black bear jumped over the lazy dog.

答案 1 :(得分:2)

$word              = array("test","test1");
$search_string     = "(".implode("|",$word).")";
$value             = preg_replace("/$search_string\s+\S+)/i","$1",$text);

试试这个..