Olmayan html bağlantıları değiştirin

Ben aşağıdaki gibi bir metin bloğunu alacak bir kod bloğu var:

Örnek metin örnek metin http://www.google.com örnek metin

preg_replace_callback yöntem ve şu normal ifadeyi kullanarak:

preg_replace_callback('/http:\/\/([,\%\w.\-_\/\?\=\+\&\~\#\$]+)/',
    create_function(
        '$matches',
        '$url = $matches[1]; 
        $anchorText = ( strlen($url) > 35 ? substr($url, 0, 35).\'...\' : $url); 
        return \'<a href="http://\'. $url .\'">\'. $anchorText .\'</a>\';'),
    $str);

Gibi bakmak için örnek metni dönüştürür:

Örnek metin örnek metin < a href = "http://www.google.com"> http://www.google.com < / A> örnek metin

Benim sorun şimdi komut gönderilmeden önce bağlantıları oluşturabilirsiniz bir zengin metin editörü girmiştik olmasıdır. Ben bir etiketi içinde zaten herhangi URL'leri görmezden böylece bu kod parçası güncellemeniz gerekir.

1 Cevap

Bir açılış çapa etiketi yakalamak için desen başına kodu ekleyin ve bir şey yakalanan zaman sonra geri kodu yapmazlar:

/(<a[^>]*>)?http:\/\/([,\%\w.\-_\/\?\=\+\&\~\#\$]+)/

Daha sonra eklemeniz gerekecek bir şey $ maçlarda varsa [1] (yanı sıra yakalar artırmak unutmayın) görmek için lamda işlevi ise

Yakalama sabit bir uzunluk değil gibi burada iddianın arkasında olumsuz bir görünüm kullanamazsınız, ancak tüm maç düşer böylece kapanış etiketi öncesinde iddiasını olumsuz bir görünüm kullanabilirsiniz:

/(<a[^>]*>)?http:\/\/([,\%\w.\-_\/\?\=\+\&\~\#\$]+)(?!<\/a>)/