Apabila menulis program kecil hari ini, saya perlu menggunakan ungkapan biasa untuk memadankan alamat URL dalam input teks oleh pengguna, dan kemudian menggantikan alamat URL dengan pautan boleh klik. Padanan alamat URL, saya fikir ini sepatutnya menjadi sesuatu yang sering digunakan oleh semua orang dalam pemprosesan pengesahan Berikut ialah ungkapan yang agak lengkap yang saya sepadukan:
Ungkapan ini boleh memadankan alamat URL http, https, ftp, ftps dan alamat IP. Ia masih merupakan pengiraan padanan alamat URL yang agak lengkap. Menggunakan ungkapan ini, saya menulis dua fungsi kecil untuk menggantikan alamat URL mesej pengguna dengan pautan yang boleh diklik. Saya hanya menggunakan fungsi replace() JavaScript untuk menggantikan URL dengan pautan:
Versi JavaScript:
kembalikan teks;
};
Versi PHP:
fungsi replace_URLtolink($text) {
// ambil apa sahaja yang kelihatan seperti URL...
$urls = array();
// membina corak
$scheme = '(https?://|ftps?://)?';
$www = '([w] .)';
$local = 'localhost';
$ip = '(d{1,3}.d{1,3}.d{1,3}.d{1,3})';
$name = '([w0-9] )';
$tld = '(w{2,4})';
$port = '(:[0-9] )?';
$the_rest = '(/?([w#!:.? =&%@!-/] ))?';
$pattern = $skema.'('.$ip.$port.'|'.$www.$name.$tld.$port.'|'.$local.$port.')'.$the_rest;
$pattern = '/'.$pattern.'/is';
// Dapatkan URL
$c = preg_match_all($pattern, $text, $m);
jika ($c) {
$urls = $m[0];
}
// Gantikan semua URL
jika (! kosong($urls)) {
foreach ($url sebagai $url) {
$pos = strpos('http://', $url);
jika (($pos && $pos != 0) || !$pos) {
$fullurl = 'http://'.$url;
} lain {
$fullurl = $url;
}
$pautan = ''.$url.'';
$text = str_replace($url, $link, $text);
}
}
kembalikan $text;
}