Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Melaksanakan Fungsi Pautan Auto Stack Overflow dalam PHP?

Bagaimanakah Saya Boleh Melaksanakan Fungsi Pautan Auto Stack Overflow dalam PHP?

Linda Hamilton
Lepaskan: 2024-11-04 11:35:02
asal
514 orang telah melayarinya

How Can I Implement Stack Overflow's Auto-Link Functionality in PHP?

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) . "&amp;hellip;";
        }

        return sprintf(\'<a rel="nofollow" href="%s">%s</a>\', $url, $text);
    ');

    return preg_replace_callback($pattern, $callback, $text);
}</code>
Salin selepas log masuk

Memecahkan Corak Regex:

Corak ungkapan biasa memulakan carian tamak (?i) dan mencari segmen berikut:

  • Protokol : a-z :
  • Domain: wwwd{0,3}[.]|[a-z0-9.-] .{2,4}
  • Laluan: /(?:1 |((2 |((3 )))) ) (?:((4 |((5 ))))|6 ))

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/…

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.


  1. s()<>
  2. s()< >
  3. s()<> 🎜>s()<>
  4. s`!()[]{};:'".,<>?«»“”' '

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan