Kesan dan Tukar URL kepada Pautan HTML dalam Teks
Dalam pelbagai aplikasi dalam talian, menukar URL yang disebut dalam teks kepada pautan boleh klik adalah keperluan biasa . Mari kita terokai cara untuk mencapai ini dalam PHP.
Keperluan
Penyelesaian
Pendekatan Berasaskan Ungkapan Biasa
Mari buat ungkapan biasa yang sepadan URL yang sah dan konstituennya bahagian:
$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]+?)?'; $rex = "&\b$rexProtocol$rexDomain$rexPort$rexPath$rexQuery$rexFragment(?=[?.!,;:\"]?(\s|$))&";
Pelaksanaan
Kita boleh menggunakan preg_match_all() untuk mencari semua padanan URL dalam teks:
preg_match_all($rex, htmlspecialchars($text), $matches, PREG_OFFSET_CAPTURE);
Tukar kepada Pautan HTML
Kami akan mengulangi perlawanan dan mencipta pautan HTML yang sesuai:
foreach ($matches[0] as $match) { $url = $match[0]; $domain = $matches[2][0]; $path = $matches[4][0]; $completeUrl = $matches[1][0] ? $url : "http://$url"; $htmlLink = "<a href='$completeUrl'>$domain$path</a>"; $text = str_replace($url, $htmlLink, $text); }
Pendekatan ini mengendalikan kebanyakan format URL dengan cekap sambil mengekalkan keselamatan terhadap serangan XSS.
Atas ialah kandungan terperinci Bagaimana untuk Mengesan dan Menukar URL kepada Pautan HTML dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!