Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich URLs in PHP-Text mithilfe regulärer Ausdrücke erkennen und verknüpfen?
URLs im Text erkennen und verknüpfen
Bei der Arbeit mit vom Benutzer bereitgestelltem Text ist es häufig erforderlich, im Text eingebettete URLs zu identifizieren und zu verknüpfen . So erreichen Sie dies in PHP:
Verwenden eines regulären Ausdrucks
Um URLs zu erkennen, können Sie den folgenden regulären Ausdruck verwenden:
$rexProtocol = '(https?://)?'; $rexDomain = '((?:[-a-zA-Z0-9]{1,63}\.)+[-a-zA-Z0-9]{2,63}|(?:[0-9]{1,3}\.){3}[0-9]{1,3})'; $rexPort = '(:[0-9]{1,5})?'; $rexPath = '(/[!$-/0-9:;=@_\':;!a-zA-Z\x7f-\xff]*?)?'; $rexQuery = '(\?[!$-/0-9:;=@_\':;!a-zA-Z\x7f-\xff]+?)?'; $rexFragment = '(#[!$-/0-9:;=@_\':;!a-zA-Z\x7f-\xff]+?)?'; $regex = "&\b$rexProtocol$rexDomain$rexPort$rexPath$rexQuery$rexFragment(?=[?.!,;:\"]?(\s|$))&";
Dieser reguläre Ausdruck passt zu:
Wird erstellt Hyperlinks
Sobald URLs erkannt wurden, können Sie die folgende Rückruffunktion verwenden, um HTML-Hyperlinks zu erstellen:
function callback($match) { $completeUrl = $match[1] ? $match[0] : "http://{$match[0]}"; return '<a href="' . $completeUrl . '">' . $match[2] . $match[3] . $match[4] . '</a>'; }
Diese Funktion stellt „http://“ voran, wenn kein Protokoll angegeben ist und erstellt ein HTML-Ankertag mit der erkannten URL als href-Attribut.
Anwenden der Regex und Rückruf
Schließlich können Sie preg_replace_callback verwenden, um den regulären Ausdruck anzuwenden und Hyperlinks für alle erkannten URLs zu erstellen:
$text = "Here are some URLs: stackoverflow.com/questions/1188129/pregreplace-to-detect-html-php"; print preg_replace_callback($regex, 'callback', htmlspecialchars($text));
Dadurch wird der Text mit erkannten URLs ausgegeben, die in anklickbare Links umgewandelt werden .
Zusätzlich Überlegungen
Das obige ist der detaillierte Inhalt vonWie kann ich URLs in PHP-Text mithilfe regulärer Ausdrücke erkennen und verknüpfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!