2011-08-20 39 views
5

thể trùng lặp:
replace ereg_replace with preg_replacechức năng Thay đổi để sử dụng preg_replace() thay vì ereg_replace

tôi đã có các chức năng sau đây trong một cơ sở mã mà phải mất một String và làm cho các liên kết hoạt động. Tôi đã nhận thấy rằng ereg_replace() được Khấu hao. Làm thế nào tôi sẽ thay đổi điều này để sử dụng preg_replace?

function makeActiveLink($originalString){ 

     $newString = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\" target=\"_blank\">\\0</a>", $originalString); 
     return $newString; 
    } 

Trả lời

1
function makeActiveLink($originalString) { 
    $pattern '#[a-z]+://[^<>\s]+[[a-z0-9]/]#i'; 
    $newString = preg_replace($pattern, '<a href="\\0" target="_blank">\\0</a>', $originalString); 

    return $newString; 
} 
4

Bạn có thể giữ nó gần như giống hệt nhau, nhưng nó sẽ là thích hợp hơn để thay đổi một số điều:

function makeActiveLink($originalString){ 
    $newString = preg_replace('#[a-z]+://[^<>\s]+[[a-z0-9]/]#i', '<a href="\0" target="_blank">\0</a>', $originalString); 

    return $newString; 
} 

Lưu ý rằng tôi đã sử dụng # như một dấu phân cách bởi vì bạn có dấu gạch chéo bên trong của bạn chuỗi.

+0

Bạn có thể sử dụng 'A-z' thay vì 'a-zA-Z' hoặc sử dụng' a-z' cùng với công cụ sửa đổi 'i' để báo cho công cụ biểu thức chính quy bỏ qua trường hợp. –

+0

@Samir: Cảm ơn, đã thay đổi. – Ryan

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