把空间放在奇怪的地方

时间:2017-12-13 13:33:14

标签: php regex

我正在调试以下代码:

输入:FOO || BAR BAR

<?php
 echo preg_replace('/([^|]*) |/', '$1', 'FOO || BAR BAR') ?>
?>

输出:FOO|| BarBar

我想删除preg_replace表达式,因为无论如何输入都是我想要的。但是我认为它已被编码(由另一个开发者编写)是有原因的。

你能解释一下RegExp正在做什么,以便我们可以猜出它为什么存在吗?

1 个答案:

答案 0 :(得分:0)

你的问题有点不清楚。

如果你想了解正则表达式实际上在寻找什么,我建议使用在线正则表达式工具,例如: Online regex tester(已经预先填写了您的示例代码)。

如果您想了解该代码段的“原因”,您需要检查代码,就像FirstOne在其评论中所建议的那样。

从我看到的情况来看,我猜正则表达式中存在错误。我假设,最初的意图是删除管道字符前面的空格字符。但是,管道字符是正则表达式中的特殊字符(逻辑OR),因此需要进行转义:

<?php
 echo preg_replace('/([^|]*) \|/', '$1', 'FOO || BAR BAR') ?>
?>