Nasıl PHP preg_replace kullanarak Twitter Adlarını Linkify mı?

0 Cevap php

Benim twitter durum nesnelerin text özelliğini arama ve <a href="http:/twitter.com/username">@username</a> için kullanıcı adı @ takas etmek istiyorum. Ne ben denedim şimdiye kadar bu gibi görünüyor:

$pattern = '/([@]{1})([a-zA-Z0-9\_]+)/';
$replace = '<a href="http://twitter.com/\2">\1\2</a>';
$new_string = preg_replace($pattern, $replace, $text);

Ama başkasını yapmaz. Benim reg ihr yanlış olduğunu biliyorum ama tam olarak nerede / neden bilemiyorum. Yardım?

** Düzenleme: ... örnek veri olarak istenen?

$text = '@janesmith I like that, but my friend @johndoe said it better.';

İstenilen çıktı:

@janesmith Bunu sevdim, ama arkadaşım @johndoe daha iyi dedi.

***** MY FULL FUNCTION *****

function linkify($string, $twitter=false) {

    // reg exp pattern
    $pattern = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";

    // convert string URLs to active links
    $new_string = preg_replace($pattern, "<a href=\"\\0\">\\0</a>", $string);

    if ($twitter) {
        $pattern = '/@([a-zA-Z0-9_]+)/';
        $replace = '<a href="http://twitter.com/\1">@\1</a>';
        $new_string = preg_replace($pattern, $replace, $new_string);
    }

    return $new_string;
}

0 Cevap