Php 如何删除此正则表达式输出中的空格?
我在PHP中使用正则表达式。这是我的剧本:Php 如何删除此正则表达式输出中的空格?,php,regex,preg-replace,preg-match,Php,Regex,Preg Replace,Preg Match,我在PHP中使用正则表达式。这是我的剧本: $s="2044 blablabla 2033 blablabla 2088"; echo preg_replace("/(20)\d\d/","$1 14",$s); 结果是这样的: 20 14 blablabla 20 14 blablabla 20 14 我想删除20和14之间的空格,以获得结果2014。如何执行此操作?检查preg\u replace手册后: 使用替换模式时,如果反向引用 紧接着是另一个数字(即:放置一个文字数字 在匹配模
$s="2044 blablabla 2033 blablabla 2088";
echo preg_replace("/(20)\d\d/","$1 14",$s);
结果是这样的:
20 14 blablabla 20 14 blablabla 20 14
我想删除
20
和14
之间的空格,以获得结果2014
。如何执行此操作?检查preg\u replace
手册后:
使用替换模式时,如果反向引用
紧接着是另一个数字(即:放置一个文字数字
在匹配模式之后),您不能使用熟悉的
\\1
用于反向参考的符号<例如,代码>\\11
混淆preg\u replace()
,因为它不知道您是否需要
\\1
后接文字1
,或\\11
反向引用后面没有任何内容。在这种情况下,解决方案是使用
\${1}1
。这将创建一个独立的$1
反向引用,保留1
作为字面意思
因此,使用
"\${1}14"
或
你可以这样做
$s="2044 blablabla 2033 blablabla 2088";
echo preg_replace("/(20\d\d)/","2014",$s);
您需要使用
preg\u replace\u callback()
函数:
echo preg_replace_callback("/(20)\d\d/", function($number) {
return $number[1].'14';
},$s);
// 2014 blablabla 2014 blablabla 2014
您需要在单引号内使用花括号:
echo preg_replace("/(20)\d\d/",'${1}14',$s);
像这样的新结果4blabla4blabla4@ro0xandr检查上面的编辑。@CasimiritHippolyte以8秒的优势击败你…!!:Dmmmm…您正在用
20
硬编码$1
!???他使用了此模式(20)\d\d
而不是(\d\d)\d\d
是的,它适用于此问题,不是通用解决方案,感谢allRTM:
echo preg_replace("/(20)\d\d/",'${1}14',$s);