Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用preg_match替换字符串_Php_Regex - Fatal编程技术网

Php 使用preg_match替换字符串

Php 使用preg_match替换字符串,php,regex,Php,Regex,我在使用preg_match查找和替换字符串时遇到问题。兴趣字符串为: <span style="font-size:0.6em">EXPIRATION DATE: 04/30/2011</span> 有效期:2011年4月30日 我需要将目标日期“2011年4月30日”替换为其他日期。有人能给我一根骨头吗?给我一个正则表达式,在PHP中使用preg_match来匹配这个模式?我还需要它以这样一种方式匹配,即它只替换代码中的第一个结束跨距,而不替换后面的结束跨距标记,

我在使用preg_match查找和替换字符串时遇到问题。兴趣字符串为:

<span style="font-size:0.6em">EXPIRATION DATE: 04/30/2011</span>
有效期:2011年4月30日
我需要将目标日期“2011年4月30日”替换为其他日期。有人能给我一根骨头吗?给我一个正则表达式,在PHP中使用preg_match来匹配这个模式?我还需要它以这样一种方式匹配,即它只替换代码中的第一个结束跨距,而不替换后面的结束跨距标记,例如:

<span style="font-size:0.6em">EXPIRATION DATE: 04/30/2011</span><span class="hello"></span>
有效期:2011年4月30日
我不精通正则表达式,虽然我花了最后一个小时试图学习足够的知识来实现这一点,但我完全失败了。非常感谢

编辑:正如你所见,这让我筋疲力尽。我的意思是preg_replace,而不是preg_match。

正则表达式应该是:

(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d
如果您只想匹配一个实例,这是可以的。对于多个实例,请改用preg_match_all。摘自


<>编辑:你是在寻找一个PHP脚本中的搜索和替换,还是想做一些JavaScript活体替换?

如果你在替换之后,考虑使用,比如

preg_replace('@(\d{2})/(\d{2})/(\d{4})@', '<new date>', $string);
preg_replace('@(\d{2})/(\d{2})/(\d{4})@',''$string);
这个怎么样:

$toBeFoundPattern = '/([0-9][0-9])\/([0-9][0-9])\/([0-9][0-9][0-9][0-9])/';
$toBeReplacedPattern = '$2.$1.$3';

$inString = '<span style="font-size:0.6em">EXPIRATION DATE: 04/30/2011</span>';

// Will convert from US date format 04/30/2011 to european format 30.04.2011
echo preg_replace( $toBeFoundPattern, $toBeReplacedPattern, $inString );
模式总是以相同的所谓分隔符字符开始和结束。通常使用/这个字符

$1引用字符串,该字符串匹配由([0-9][0-9])匹配的第一个字符串,$2引用为(…),而$3引用由最后一个(…)匹配的四个字母

[…]匹配了一个字符,这是括号内列出的字符之一。例如,[a-z]匹配所有小写字母

要在模式内部使用特殊含义字符/,需要通过\对其进行转义,使其成为文字斜杠字符


更新:下面指出的使用{..}是重复模式的简写。

这非常有效!谢谢布朗先生。说真的…这帮了大忙@沙丁鱼:如果答案能解决你的问题,通常最好把它标记为“接受”:@Brecht:谢谢!我试过了,但它不允许我:(系统说我必须再等4分钟。谢谢你的提示!我喜欢日和月验证,但第一年有点限制(仅限于20世纪和21世纪)模式附件可以是除正斜杠以外的字符(见我的答案),他们只需要保持一致。谢谢!绝对有助于完善比赛!
EXPIRATION DATE: 30.04.2011