我正在调试以下代码:
输入:FOO || BAR BAR
<?php
echo preg_replace('/([^|]*) |/', '$1', 'FOO || BAR BAR') ?>
?>
输出:FOO|| BarBar
我想删除preg_replace表达式,因为无论如何输入都是我想要的。但是我认为它已被编码(由另一个开发者编写)是有原因的。
你能解释一下RegExp正在做什么,以便我们可以猜出它为什么存在吗?
答案 0 :(得分:0)
你的问题有点不清楚。
如果你想了解正则表达式实际上在寻找什么,我建议使用在线正则表达式工具,例如: Online regex tester(已经预先填写了您的示例代码)。
如果您想了解该代码段的“原因”,您需要检查代码,就像FirstOne在其评论中所建议的那样。
从我看到的情况来看,我猜正则表达式中存在错误。我假设,最初的意图是删除管道字符前面的空格字符。但是,管道字符是正则表达式中的特殊字符(逻辑OR),因此需要进行转义:
<?php
echo preg_replace('/([^|]*) \|/', '$1', 'FOO || BAR BAR') ?>
?>