2011-10-17 14 views
5

HTML belgesindeki bir dizenin son eşlemesini (örneğin, foo kelimesini) değiştirmeniz gerekiyor. Sorun, HTML belgesinin yapısının her zaman rasgele olmasıdır.Preg_replace ile sadece bir dizenin son eşleşmesi nasıl değiştirilir?

Bunu preg_replace ile yapmaya çalışıyorum, ancak şimdiye kadar sadece ilk eşleşmeyi nasıl değiştireceğimi biliyorum, ancak sonuncuyu değil.

Teşekkürler.

+1

bir örnek göstermek lütfen ve ayrıca [HTML Ayrıştırma En Yöntemleri] bakın (http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/35 77662 # 3577662) – Gordon

+1

Son eşleşmeyi nasıl değiştireceğinizi biliyorsanız, jou sadece ipi ters çevirebilir, değiştirin ve tekrar ters çevirebilirsiniz;) –

cevap

16

kullanın negatif görünüm sonra (?!...)

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

çıkışı:

text abcd text bar efgh 
+0

Desen için teşekkürler! –

0

bir örnek

<?php 

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

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

print $results[0]; 

?> 
İlgili konular