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)
我想删除之间的空间20和14获得的结果2014.我怎么做?
Cas*_*yte 12
您需要在单引号内使用大括号:
echo preg_replace("/(20)\d\d/",'${1}14',$s);
Run Code Online (Sandbox Code Playgroud)
检查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)
你可以简单地这样做,
$s="2044 blablabla 2033 blablabla 2088";
echo preg_replace("/(20\d\d)/","2014",$s);
Run Code Online (Sandbox Code Playgroud)