2011-10-17 23 views
5

Tôi phải thay thế kết quả cuối cùng của chuỗi (ví dụ: từ foo) trong tài liệu HTML. Vấn đề là cấu trúc của tài liệu HTML luôn là ngẫu nhiên.Làm cách nào để chỉ thay thế kết quả trùng khớp cuối cùng của chuỗi bằng preg_replace?

Tôi đang cố gắng thực hiện điều đó với preg_replace, nhưng cho đến nay tôi biết cách thay thế chỉ kết quả phù hợp đầu tiên, nhưng không thay thế kết quả cuối cùng.

Cảm ơn.

+1

vui lòng cho một ví dụ và cũng xin vui lòng xem [Phương pháp tốt nhất để phân tích cú pháp HTML] (http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/35 77662 # 3577662) – Gordon

+1

nếu bạn biết làm thế nào để thay thế trận đấu cuối cùng, jou chỉ đơn giản có thể đảo ngược chuỗi, thay thế và đảo ngược lại;) –

Trả lời

16

Sử dụng tiêu cực nhìn sau (?!...)

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

đầu ra:

text abcd text bar efgh 
+0

Cảm ơn bạn! –

0

Một ví dụ

<?php 

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

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

print $results[0]; 

?> 
Các vấn đề liên quan