2008-10-27 45 views
7

Tôi có trình chỉnh sửa wysiwyg ở phía sau của mình và nó đang vấp phải cụm từ thông dụng đầu tiên tôi viết. Đây là trong PHP4, sử dụng preg_replace(). Tôi đang chụp URI và văn bản được liên kết.cụm từ thông dụng - khớp với tất cả các neo với các thuộc tính tùy chọn

@<a\shref=\"http[s]?://([^\"]*)\"[]>(.*)<\/a>@siU 

Các khách hàng muốn tất cả các liên kết bên ngoài để mở trong một cửa sổ mới, vì vậy đó là biểu hiện tôi đang sử dụng để tìm tất cả (hy vọng) liên kết bên ngoài, nhưng để lại, liên kết trang neo nội bộ, vv

tôi nhận ra trình soạn thảo wysiwyg cũng thêm style="font-weight: bold" nếu người dùng chọn in đậm trên liên kết. Gần đây tôi mới bắt đầu học các cụm từ thông dụng nên tôi không chắc chắn về cách giải quyết vấn đề này.

Tôi sẽ làm như thế nào?

Trả lời

7

này phải phù hợp với nó alright:

/<a\s+([^>]*)href="https?:\/\/([^"]*)"(.*?)>(.*?)<\/a>/ 

Điều hữu ích ở đây là trận đấu lười biếng. *? nó có nghĩa là nó sẽ chỉ phù hợp với số tiền mà nó hoàn toàn cần, trái ngược với trận đấu thông thường, mà là tham lam.

Để chứng minh, với văn bản này:

a b c d a b c d

những regexes sẽ có kết quả khác nhau:

/a.*c/ selects: "a b c d a b c" 
/a.*?c/ selects: "a b c" 
Các vấn đề liên quan