在PHP字符串中进行多次搜索和替换?

时间:2013-04-29 01:07:15

标签: php

我现在正在使用PHP和WordPress,我需要基本运行以下代码,将$current_path中的文本替换为$new_path中的文本$current_path EXIST {{1} }}

我希望能够迭代一个数组,而不是像这样反复运行,或者任何更好的方法会很好吗?

$content

4 个答案:

答案 0 :(得分:2)

$content = 'www.domain.com/news-tag/newstaghere'

$current_paths = array('test-tag','news-tag','ppc-tag');
$new_paths = array('test/tag','news/tag','ppc/tag';
$content = str_replace($current_paths, $new_paths, $content);

答案 1 :(得分:2)

str_replace() accepts array arguments

$current_paths = array('test-tag','news-tag','ppc-tag');
$new_paths = array('test/tag','news/tag','ppc/tag');
$new_content = str_replace($current_paths, $new_paths, $content);

或者您可以使用strtr()的单个数组:

$path_map = array('test-tag'=>'test/tag', 'news-tag'=>'news/tag', 'ppc-tag'=>'ppc/tag');
$new_content = strtr($content, $path_map);

然而,你似乎在做一些非常通用的事情。也许你需要的只是一个正则表达式?

$new_content = preg_replace('/(test|news|ppc)-(tag)/u', '\1/\2', $content);

或者甚至只是

$new_content = preg_replace('/(\w+)-(tag)/u', '\1/\2', $content);

答案 2 :(得分:0)

可以为str_replace函数提供数组参数,如以下PHP.net页面所述:
http://php.net/manual/en/function.str-replace.php

有关详细信息,请参阅上面链接的页面上的“示例#2”。

答案 3 :(得分:0)

你可以这样做:

$content = 'www.domain.com/news-tag/newstaghere';
$content = preg_replace('~www\.domain\.com/\w++\K-(?=tag/)~', '/', $content);