preg_replace 在 for 循环中
preg_replace in for loop
我想在一些连词后插入符号。 $cont 变量有一些文本。我的代码:
$conjs = array ('i', 'a', 'w');
$size = sizeof($conjs);
$replacm = ' ';
for ($i=0; $i < $size; $i++){
$pattern = '/\s(' . $conjs[$i] . ')(\s)/';
$replaced = preg_replace($pattern, $replacm, $cont);
}
print $replaced;
此 returns $cont 文本仅随最后一个数组元素 ("w") 发生变化。我做错了什么?
尝试将您的 for
更改为:
for ($i=0; $i < $size; $i++){
$pattern = '/\s(' . $conjs[$i] . ')(\s)/';
$cont= preg_replace($pattern, $replacm, $cont);
}
工作示例
$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;
此方法已存在于 T-Regx tool 中,名为 chainedReplac()
。
Pattern::compose(['\si(\s)', '\sa(\s)', '\sw(\s)'])->chainedReplace($cont)->with("' ");
更不用说你可以做到
Pattern::of('\s[iaw](\s)')->replace($cont)->all()->with(' ');
我想在一些连词后插入符号。 $cont 变量有一些文本。我的代码:
$conjs = array ('i', 'a', 'w');
$size = sizeof($conjs);
$replacm = ' ';
for ($i=0; $i < $size; $i++){
$pattern = '/\s(' . $conjs[$i] . ')(\s)/';
$replaced = preg_replace($pattern, $replacm, $cont);
}
print $replaced;
此 returns $cont 文本仅随最后一个数组元素 ("w") 发生变化。我做错了什么?
尝试将您的 for
更改为:
for ($i=0; $i < $size; $i++){
$pattern = '/\s(' . $conjs[$i] . ')(\s)/';
$cont= preg_replace($pattern, $replacm, $cont);
}
工作示例
$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;
此方法已存在于 T-Regx tool 中,名为 chainedReplac()
。
Pattern::compose(['\si(\s)', '\sa(\s)', '\sw(\s)'])->chainedReplace($cont)->with("' ");
更不用说你可以做到
Pattern::of('\s[iaw](\s)')->replace($cont)->all()->with(' ');