PHP preg_replace用'/'替换'/ /'

时间:2018-12-05 06:39:30

标签: php regex string preg-replace str-replace

我试图用var td=$(this); .... success: function(data) { td.parents().find('td .product_list').html(data); td.parents().find('td .product_list').fadeIn(); } 替换字符串中所有出现的'/ /'。但是,我似乎找不到正确的正则表达式表达式来匹配要替换的字符串。

当前,我有'/',但这不能代替任何出现的preg_replace('/\/\s\//', '/', $string);

需要明确的是,我想匹配任何出现的正斜杠,后跟空格和正斜杠的情况。似乎最后一个正斜杠弄乱了事情。我也尝试过'/ /',但无济于事。

编辑: 如果我在像这样的字符串上运行正则表达式,则可以正常工作: str_replace(),我得到的输出是:echo(preg_replace('/\/\s?\//m', '/', ".... . -.-- / / .... ---"));。但是当我这样运行它时: .... . -.-- / .... ---替换无效。为了便于记录,在preg_replace之前$morse = preg_replace('/\/\s?\//m', '/', $morse);的输出是echo($morse),之后是完全相同的。我不知道是什么原因造成的,$ morse变量字符串中某种奇怪的编码?

请帮助,这使我发疯。预先感谢!

2 个答案:

答案 0 :(得分:0)

您编写的正则表达式模式是正确的,如果找到/ /,则它将替换。我已将您的pattern更新为/\/\s?\//m。您可以通过以下方式try

$re = '/\/\s?\//m';
$str = 'test string // test string / /';
$subst = '/';

$result = preg_replace($re, $subst, $str);

echo "The result of the substitution is ".$result;

答案 1 :(得分:0)

使用其他定界符将极大地简化以下内容:

$regex = '~/\s+/~';
$replacement = '/';

$string = preg_replace($regex, $replacement, $original_string);

请注意,原始字符串保持不变。