Meniru Ciri Pautan Auto Stack Overflow dalam PHP
Gelagat pautan auto Stack Overflow sangat mudah, membolehkan pengguna memaut ke tapak web dengan mudah atau kandungan tertentu dalam siaran. Artikel ini meneroka cara melaksanakan fungsi yang serupa dalam PHP, memanfaatkan corak regex untuk mengenal pasti dan menukar URL kepada pautan HTML.
Untuk memahami kerja dalaman, mari kita pecahkan kod yang disediakan:
<code class="php">/** * Replace links in text with html links * * @param string $text * @return string */ function auto_link_text($text) { // a more readably-formatted version of the pattern is on http://daringfireball.net/2010/07/improved_regex_for_matching_urls $pattern = '(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))'; $callback = create_function('$matches', ' $url = array_shift($matches); $url_parts = parse_url($url); $text = parse_url($url, PHP_URL_HOST) . parse_url($url, PHP_URL_PATH); $text = preg_replace("/^www./", "", $text); $last = -(strlen(strrchr($text, "/"))) + 1; if ($last < 0) { $text = substr($text, 0, $last) . "&hellip;"; } return sprintf(\'<a rel="nofollow" href="%s">%s</a>\', $url, $text); '); return preg_replace_callback($pattern, $callback, $text); }</code>
Memecahkan Corak Regex:
Corak ungkapan biasa memulakan carian tamak (?i) dan mencari segmen berikut:
Fungsi Panggilan Balik Tersuai:
Fungsi panggil balik membina penanda pautan HTML. Ia mengekstrak URL, menghuraikannya, mengalih keluar "www" terkemuka daripada domain, mengehadkan teks URL yang dipaparkan jika perlu dan akhirnya menjana teg sauh dengan atribut yang sesuai.
Sampel Input dan Output:
Untuk menggambarkan operasi fungsi, pertimbangkan teks input berikut:
"Ini teks saya. Saya tertanya-tanya jika anda tahu tentang bertanya soalan mengenai StackOverflow: Semak Ini https:/ /www.php.cn/link/6e212075e04d1616b06a5e1398e10053
Selain itu, fungsi php base_convert?
https://www.php.cn/link/63c0d1be32c9c7e9e2c9c9e9e2c . php.cn/link/a995b410d5e76ed56523533b47e3786a"
Output selepas diproses oleh fungsi auto_link_text() ialah:
"Ini adalah teks saya, saya tertanya-tanya jika anda tahu tentang bertanya soalan pada Stack Ini keluar
stackoverflow.com/questions/1925455/…Juga, fungsi php base_convert?
pt.php.net/manual/en/… Dengan melaksanakan teknik ini, pembangun boleh dengan mudah memasukkan fungsi pemautan automatik Stack Overflow ke dalam aplikasi PHP mereka, meningkatkan pengalaman pengguna dan memudahkan rujukan kandungan oleh kedua-dua penulis dan pembaca.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Fungsi Pautan Auto Stack Overflow dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!