我现在正在使用PHP和WordPress,我需要基本运行以下代码,将$current_path
中的文本替换为$new_path
中的文本$current_path
EXIST {{1} }}
我希望能够迭代一个数组,而不是像这样反复运行,或者任何更好的方法会很好吗?
$content
答案 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);