preg_match数组字符串替换

时间:2016-07-18 05:11:33

标签: php arrays preg-match

我有一个数组if (strcmp (argv[1], "-f") == 0) { argOneIsMinusF(); } 这会输出以下内容

var args = [ for ( arg in funcArgs ) macro $i { arg.name } ];
func.expr = macro 
{
    super( $a{ args } );
};

其中每一项都是追踪细节。

我正在通过以下代码运行数组,尝试为$track['context']内的每个项目运行常州, 的, 妈咪ZA, 已揽件快件已从, 常州, 发出快件到达 ,然后替换preg_match中的字符串

$track['context']

2 个答案:

答案 0 :(得分:1)

我建议使用坏词的数据结构,其中单词是键,并替换关联数组中的值。

然后你可以循环你的内容数组,并使用回调函数进行替换:

// Sample data:
$track['context'] = array(
    'qdf 常州', 
    'fdhlkjfq fdkq ',
    '的 fdsqfsf'
);
// Make a translation table for the bad words:
$badWords = [
    '常州' => 'one',
    '的' => 'two'
];
// Build a regular expression that matches any of the above words:
$regexp = "/\b(" . implode('|', array_map('preg_quote', array_keys($badWords))) . ")\b/u";

// Iterate over the content
foreach ($track['context'] as &$subject) {
    $subject = preg_replace_callback($regexp, function($matches) use ($badWords) {
        // Replace the matched bad word with what we have mapped for it:
        return $badWords[$matches[0]];
    }, $subject);
}
// Output results:
print_r ($track['context']);

eval.in

上查看它

答案 1 :(得分:0)

首先,让$ badWords成为一个数组,如:

$badWords = array('bad_word1', 'bad_word2');

其次,我会使用strpos函数,该函数用于查找其他字符串中出现的字符串。

最后,请记住在代码中将$ noBadWordsFound设置为false。