2011-10-17 67 views
5

我必须替换HTML文档中字符串的最后一个匹配项(例如foo)。问题在于HTML文档的结构总是随机的。如何只用preg_replace替换一个字符串的最后一个匹配?

我试图用preg_replace来完成,但到目前为止我知道如何只替换第一个匹配,但不是最后一个。

谢谢。

+1

请出示的例子,也请参阅[最佳方法来解析HTML] (http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/35 77662#3577662) – Gordon

+1

如果你知道如何取代最后一场比赛,那么你可以简单地将字符串反转,取代,并再次反转;) –

回答

16

使用排除以后再看(?!...)

$str = 'text abcd text text efgh'; 
echo preg_replace('~text(?!.*text)~', 'bar', $str),"\n"; 

输出:

text abcd text bar efgh 
+0

感谢您的模式! –

0

一个例子

<?php 

$str = 'Some random text'; 
$str_Pattern = '/[^ ]*$/'; 

preg_match($str_Pattern, $str, $results); 

print $results[0]; 

?> 
相关问题