เมื่อเขียนโปรแกรม MINI วันนี้คุณต้องใช้นิพจน์ทั่วไปเพื่อให้ตรงกับที่อยู่ URL ในข้อความที่ผู้ใช้ป้อนจากนั้นแทนที่ที่อยู่ URL ด้วยลิงก์ที่คุณสามารถคลิกได้ ฉันคิดว่านี่คือสิ่งที่คุณมักใช้ในการประมวลผลการตรวจสอบ ที่นี่ฉันจะให้การแสดงออกที่ค่อนข้างสมบูรณ์ที่ฉันรวม:
การคัดลอกรหัสมีดังนี้:
var url = /(https?://///Tpps?:///// /)((/d {1,3s ocalhost) (: [0-9]+)? | ([/w]+/.) (/s+) (/w {2,4}) (: [0-9]+)?) (//? ([/w#!:.?+= &%@!
นิพจน์นี้สามารถจับคู่ที่อยู่ URL ของที่อยู่ HTTP, HTTPS, FTP, FTPS และ IP มันยังค่อนข้างสมบูรณ์แบบสำหรับการจับคู่ที่อยู่ URL การใช้นิพจน์นี้ฉันเขียนฟังก์ชั่นเล็ก ๆ สองฟังก์ชั่นเพื่อแทนที่ที่อยู่ URL ของข้อความของผู้ใช้ด้วยลิงก์ที่คลิกได้ ไม่มีอะไรยากเกินไป มันคือการใช้ฟังก์ชั่น JavaScript แทนที่ () เพื่อใช้ URL ทดแทนเพื่อเชื่อมโยง:
JavaScript เวอร์ชัน:
การคัดลอกรหัสมีดังนี้:
-
* เวอร์ชัน JavaScript
* แปลงที่อยู่ URL เป็นรหัสลิงก์ A-tagged ที่สมบูรณ์
-
var replumurlToLink = function (ข้อความ) {
text = text.replace (url, function (url) {
var urltext = url;
if (! url.match ('^https?: /////')) {
url = 'http: //' + url;
-
ส่งคืน '' + urltext + '';
-
ส่งคืนข้อความ;
-
เวอร์ชัน PHP:
การคัดลอกรหัสมีดังนี้:
-
* เวอร์ชัน PHP ได้รับการแก้ไขตามรหัส Silva
* แปลงที่อยู่ URL เป็นรหัสลิงก์ A-tagged ที่สมบูรณ์
-
-
ชื่อ: แทนที่ _urltolink ()
เวอร์ชัน: 1.0
ผู้แต่ง: J de Silva
คำอธิบาย: ส่งคืนโมฆะ; จัดการแปลง
URL ลงในลิงค์ที่คลิกได้จากสตริง
ประเภท: ฟังก์ชั่น
-
ฟังก์ชั่นแทนที่ _urltolink ($ text) {
// คว้าอะไรก็ได้ที่ดูเหมือน URL ...
$ urls = array ();
// สร้างรูปแบบ
$ 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#!:?+=&%@!/-//Ink+))?';
$ pattern = $ scheme. '('. $ ip. $ พอร์ต '|'. $ www. $ name. $ tld. $ พอร์ต. '|'. $ local. $ พอร์ต. ')'. $ the_rest;
$ pattern = '/'.$pattern.'/is';
// รับ URL
$ c = preg_match_all (รูปแบบ $, $ text, $ m);
ถ้า ($ c) {
$ urls = $ m [0];
-
// แทนที่ URL ทั้งหมด
ถ้า (! ว่างเปล่า ($ urls)) {
foreach ($ urls เป็น $ url) {
$ pos = strpos ('http/: /////', $ url);
if (($ pos && $ pos! = 0) ||! $ pos) {
$ fullUrl = 'http: //'.$url;
} อื่น {
$ fullurl = $ url;
-
$ link = ''. $ url. '';
$ text = str_replace ($ url, $ link, $ text);
-
-
ส่งคืนข้อความ $;
-