我想用PHP用另一个字符串替换空格。

我这样做如下:

$string = 'whatever text including some $text between delimiters$ and...';
$string_replaced = preg_replace('/\s\s+/', '\:', $string);


但是它替换了字符串中的所有空格,这很合逻辑。

我只希望将正则表达式应用于$分隔符之间。

official preg_replace() docs中,我找不到任何有帮助的内容。

因此,我想我缺少一些允许这样做的PHP功能。

最佳答案

您可以使用preg_replace_callback$符号之间的所有文本与'/\$[^$]*\$/'匹配,然后仅在这些匹配的文本内替换1+空格:

$string = 'whatever text including some $text between delimiters$ and...';
$string_replaced = preg_replace_callback('~\$[^$]*\$~', function($m) {
   return preg_replace('~\s+~u', ':', $m[0]);
}, $string);


请参见PHP demo

关于php - 替换空格,但仅在限制php之间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60706365/

10-17 03:12