我想在一些连词之后插入符号。 $ cont变量有一些文字。我的代码:
$conjs = array ('i', 'a', 'w');
$size = sizeof($conjs);
$replacm = ' $1 ';
for ($i=0; $i < $size; $i++){
$pattern = '/\s(' . $conjs[$i] . ')(\s)/';
$replaced = preg_replace($pattern, $replacm, $cont);
}
print $replaced;
这将返回仅与最后一个数组元素(“w”)一起更改的$ cont文本。我做错了什么?
答案 0 :(得分:1)
尝试将您的for
更改为:
for ($i=0; $i < $size; $i++){
$pattern = '/\s(' . $conjs[$i] . ')(\s)/';
$cont= preg_replace($pattern, $replacm, $cont);
}
答案 1 :(得分:0)
工作示例
$cont = 'any text word';
$conjs = array ('i', 'a', 'w');
$size = sizeof($conjs);
$replacm = '$';
for ($i=0; $i < $size; $i++){
$pattern = '/' . $conjs[$i] . '/';
$cont= preg_replace($pattern, $replacm, $cont);
}
print $cont;
答案 2 :(得分:0)
此方法已在T-Regx tool中存在,称为chainedReplac()
。
Pattern::compose(['\si(\s)', '\sa(\s)', '\sw(\s)'])->chainedReplace($cont)->with("'$1 ");
更不用说您可以做
Pattern::of('\s[iaw](\s)')->replace($cont)->all()->with('$1 ');