2013-07-28 32 views
0

我想检查某个字符串是否存在于某些HTML中,然后执行一些操作并将其从HTML中移除(如果存在)。该字符串的格式为“Approved NN.NN.NN”。写这段代码的最好方法是什么?PHP正则表达式:测试是否匹配,然后删除

$html = '<div>This is some text. Approved 11.22.12</div>'; 
$pattern = '/Approved [0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]/'; 
if (preg_match($pattern, $html)){ 
    stuff(); 
    $html = preg_replace($pattern, '', $html); 
} 
+0

不工作你当前的代码?结果如何不同?否则没有太多的优化,除了使用'preg_replace_callback'然后调用其他东西()。 – mario

回答

2
$pattern = '/Approved\s?\d{2}\.\d{2}\.\d{2}/'; 

我只是跑下面的代码:

$html = '<div>This is some text. Approved 11.22.12</div>'; 
$pattern = '/Approved\s?\d{2}\.\d{2}\.\d{2}/'; 
if (preg_match($pattern, $html)){ 
    $html = preg_replace($pattern, '', $html); 
} 
echo $html; 

输出:

<div>This is some text. </div> 
+0

我刚刚编辑我的答案与我跑的代码和我得到的结果。它运行良好,所以我不知道是什么可能造成麻烦。 –

+0

我想把'\ s?'换成'\ s +',因为他想匹配至少一个空格。 – Will

+0

@威尔 - 你怎么知道的?他的表情只有一个空间。也许他想匹配一个或更少的空间。但是,我没有看到任何匹配没有空间或许多危险。你是否认为他想要避免删除的文本中有“Approved87.34.21”之类的内容? –