【发布时间】:2017-12-21 10:52:25
【问题描述】:
我不认为我可以在一个 swell foop 中做到这一点,但我并没有超过要求 :-)
我当然可以定义一对一的$pattern 和$replacement 数组,我可以重复定义$pattern 数组和$replacement 字符串,但我可以同时定义吗?
假设我有三组:
$p1 = array('sis','boom','bah');
$r1 = 'cheers';
$p2 = array('boo','hiss');
$r2 = 'jeers';
$p3 = array('guinness','heineken','budweiser');
$r3 = 'beers';
我想在一个大干草堆中用它们各自的单个替换替换所有模式实例。我可以定义一个 preg_replace 调用来完成此操作吗?
【问题讨论】:
-
如果您使用正则表达式,您可以在模式中使用
(sis|boom|bah),否则 str_replace 可以获取一组值进行搜索并替换为单个值。 -
str_replace()不会考虑字边界,当在另一个子字符串中找到子字符串时,可能会返回意外结果。 -
要完全暴露不包括单词边界的问题......如果你有
$string='My sister paid 500 baht for a boomerang';并使用echo preg_replace('/sis|boom|bah/','cheers',$string);,那么你会得到这个混乱的混乱:My cheerster paid 500 cheerst for a cheerserang虽然没有预期的替代品制作。
标签: php arrays preg-replace