Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Meniru Fungsi Auto-Pautan Tindanan Overflow dalam PHP?

Bagaimana untuk Meniru Fungsi Auto-Pautan Tindanan Overflow dalam PHP?

Linda Hamilton
Linda Hamiltonasal
2024-10-30 13:32:27634semak imbas

How to Mimic Stack Overflow's Auto-Link Functionality in PHP?

Meniru Fungsi Auto-Pautan Stack Overflow

Untuk meningkatkan kandungan web, pertimbangkan untuk mensimulasikan ciri pemautan automatik Stack Overflow. Fungsi ini membolehkan penukaran URL biasa kepada hiperpautan yang menarik secara visual.

Pelaksanaan dalam PHP

Berikut ialah fungsi PHP yang diilhamkan oleh kelakuan Stack Overflow:

<code class="php">function auto_link_text($text)
{
   // URL matching regex pattern from Daring Fireball
   $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>

Contoh Penggunaan

Pertimbangkan teks input berikut:

<code class="text">This is my text.  I wonder if you know about asking questions on StackOverflow:
 Check This out http://www.stackoverflow.com/questions/1925455/how-to-mimic-stackoverflow-auto-link-behavior

 Also, base_convert php function?
http://pt.php.net/manual/en/function.base-convert.php#52450

http://pt.php.net/manual/en/function.base-convert.php?wtf=hehe#52450</code>

Menggunakan fungsi auto_link_text, teks ini diubah:

<code class="html">This is my text.  I wonder if you know about asking questions on StackOverflow:
 Check This out <a rel="nofollow" href="http://www.stackoverflow.com/questions/1925455/how-to-mimic-stackoverflow-auto-link-behavior">stackoverflow.com/questions/1925455/&hellip;</a>

 Also, base_convert php function?
<a rel="nofollow" href="http://pt.php.net/manual/en/function.base-convert.php#52450">pt.php.net/manual/en/&hellip;</a>

<a rel="nofollow" href="http://pt.php.net/manual/en/function.base-convert.php?wtf=hehe#52450">pt.php.net/manual/en/&hellip;</a></code>

Penyesuaian

Anda boleh menyesuaikan gelagat pemautan dengan mengubah suai fungsi panggil balik. Sebagai contoh, anda boleh:

  • Tukar format teks pautan
  • Tambah atribut tambahan pada teg pautan
  • Kecualikan URL tertentu daripada pautan automatik

Dengan mengubahsuai pelaksanaan, anda boleh mencipta penyelesaian autopautan tersuai yang memenuhi keperluan khusus anda.

Atas ialah kandungan terperinci Bagaimana untuk Meniru Fungsi Auto-Pautan Tindanan Overflow dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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