Détecter et lier les URL dans le texte
Lorsque vous travaillez avec du texte fourni par l'utilisateur, il est souvent nécessaire d'identifier et de lier les URL intégrées dans le texte . Voici comment y parvenir en PHP :
Utiliser une expression régulière
Pour détecter les URL, vous pouvez utiliser l'expression régulière suivante :
$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|$))&";
Cette expression régulière correspondra :
Création Hyperliens
Une fois les URL détectées, vous pouvez utiliser la fonction de rappel suivante pour créer des hyperliens HTML :
function callback($match) { $completeUrl = $match[1] ? $match[0] : "http://{$match[0]}"; return '<a href="' . $completeUrl . '">' . $match[2] . $match[3] . $match[4] . '</a>'; }
Cette fonction ajoute "http://" si aucun protocole n'est spécifié et crée une balise d'ancrage HTML avec l'URL détectée comme attribut href.
Application de l'expression régulière et Rappel
Enfin, vous pouvez utiliser preg_replace_callback pour appliquer l'expression régulière et créer des hyperliens pour toutes les URL détectées :
$text = "Here are some URLs: stackoverflow.com/questions/1188129/pregreplace-to-detect-html-php"; print preg_replace_callback($regex, 'callback', htmlspecialchars($text));
Cela affichera le texte avec les URL détectées converties en liens cliquables .
Supplémentaire Considérations
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!