我必须替换HTML文档中字符串的最后一个匹配项(例如foo)。问题在于HTML文档的结构总是随机的。如何只用preg_replace替换一个字符串的最后一个匹配?
我试图用preg_replace来完成,但到目前为止我知道如何只替换第一个匹配,但不是最后一个。
谢谢。
我必须替换HTML文档中字符串的最后一个匹配项(例如foo)。问题在于HTML文档的结构总是随机的。如何只用preg_replace替换一个字符串的最后一个匹配?
我试图用preg_replace来完成,但到目前为止我知道如何只替换第一个匹配,但不是最后一个。
谢谢。
使用排除以后再看(?!...)
$str = 'text abcd text text efgh';
echo preg_replace('~text(?!.*text)~', 'bar', $str),"\n";
输出:
text abcd text bar efgh
感谢您的模式! –
一个例子
<?php
$str = 'Some random text';
$str_Pattern = '/[^ ]*$/';
preg_match($str_Pattern, $str, $results);
print $results[0];
?>
请出示的例子,也请参阅[最佳方法来解析HTML] (http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/35 77662#3577662) – Gordon
如果你知道如何取代最后一场比赛,那么你可以简单地将字符串反转,取代,并再次反转;) –