如何删除此正则表达式输出中的空格?

ro0*_*ndr 8 php regex preg-replace preg-match

我在PHP中使用正则表达式.这是我的脚本:

$s="2044 blablabla  2033 blablabla 2088";
echo preg_replace("/(20)\d\d/","$1 14",$s);
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

20 14 blablabla 20 14 blablabla 20 14
Run Code Online (Sandbox Code Playgroud)

我想删除之间的空间2014获得的结果2014.我怎么做?

Cas*_*yte 12

您需要在单引号内使用大括号:

echo preg_replace("/(20)\d\d/",'${1}14',$s);
Run Code Online (Sandbox Code Playgroud)


hjp*_*r92 7

检查preg_replace手册后:

使用替换模式时,后向引号后面会紧跟另一个数字(即:在匹配的模式后立即放置一个文字数字),您不能使用熟悉的 \\1符号进行反向引用.\\11例如,会混淆,preg_replace()因为它不知道您是否希望后向 \\1引用后跟文字1,或者\\11 反向引用后跟什么都没有.在这种情况下,解决方案是使用 \${1}1.这会创建一个孤立的$1反向引用,将其1 作为文字.

因此,使用

"\${1}14"
Run Code Online (Sandbox Code Playgroud)

要么

'${1}14'
Run Code Online (Sandbox Code Playgroud)


Avi*_*Raj 4

你可以简单地这样做,

$s="2044 blablabla  2033 blablabla 2088";
echo preg_replace("/(20\d\d)/","2014",$s);
Run Code Online (Sandbox Code Playgroud)