Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann man die Auto-Link-Funktionalität von Stack Overflow in PHP nachahmen?

Wie kann man die Auto-Link-Funktionalität von Stack Overflow in PHP nachahmen?

Linda Hamilton
Linda HamiltonOriginal
2024-10-30 13:32:27634Durchsuche

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

Nachahmung der Auto-Link-Funktion von Stack Overflow

Um Webinhalte zu verbessern, sollten Sie die Simulation der automatischen Link-Funktion von Stack Overflow in Betracht ziehen. Diese Funktion ermöglicht die Umwandlung einfacher URLs in optisch ansprechende Hyperlinks.

Implementierung in PHP

Hier ist eine PHP-Funktion, die vom Verhalten von Stack Overflow inspiriert ist:

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

Beispielverwendung

Betrachten Sie den folgenden Eingabetext:

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

Mit der Funktion auto_link_text wird dieser Text transformiert:

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

Anpassung

Sie können das Verknüpfungsverhalten anpassen, indem Sie die Rückruffunktion ändern. Sie könnten zum Beispiel:

  • Das Linktextformat ändern
  • Zusätzliche Attribute zum Link-Tag hinzufügen
  • Bestimmte URLs von der automatischen Verlinkung ausschließen

Durch Optimierung der Implementierung können Sie eine benutzerdefinierte Lösung für die automatische Verknüpfung erstellen, die Ihren spezifischen Anforderungen entspricht.

Das obige ist der detaillierte Inhalt vonWie kann man die Auto-Link-Funktionalität von Stack Overflow in PHP nachahmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn