slimfit
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 13
|
 |
« เมื่อ: 19 มีนาคม 2012, 15:55:40 » |
|
สวัสดีครับทุกท่าน ขอรบกวนเพื่อน ๆ พี่ ๆ ใน thaiseo หน่อยครับ คือตอนนี้ผมเขียน function ไว้ตัวหนึ่งสำหรับเปลี่ยน url string ไปเป็น link โดยอัตโนมัติ (ใช้ PHP นะครับ) เช่น ในคอนเทนต์มีดังนี้ click link http://www.thaiseoboard.com นะครับ ให้เปลี่ยนเป็น click link <a href="http://www.thaiseoboard.com">http://www.thaiseoboard.com</a> นะครับ ผมลองเขียนโค้ดมาส่วนหนึ่งแล้ว (ใช้ Regular expression) แต่มันจะมีปัญหาตรงที่ถ้ามีแท็กอะไรซักอย่างปนอยู่ในคอนเทนต์แล้วดันมี url string อยู่ด้วยมันจะแทนทีเลยเช่น click link <img src="http://www.thaiseoboard.com/pic1.jpg" /> นะครับ มันจะเปลี่ยนเป็น click link <img src="<a href="http://www.thaiseoboard.com/pic1.jpg">http://www.thaiseoboard.com/pic1.jpg</a>" /> นะครับ ซึ่งไม่ถูกต้องเพราะมันไม่ควรแทนทีลงไป ที่ผมคิด logic ได้ตอนนี้คือ จะเขียน Regular ยังไงเพื่อบอกว่า ตัวอักษรที่อยู่หน้าลิงค์ต้องไม่เป็น Double Quote หรือ Single Quote แต่ไม่ทราบว่าจะเขียนออกมาเป็น Regular ยังไง รบกวนด้วยครับ
|
|
« แก้ไขครั้งสุดท้าย: 19 มีนาคม 2012, 16:02:49 โดย slimfit »
|
บันทึกการเข้า
|
|
|
|
kobkung
Verified Seller
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 103
ออฟไลน์
กระทู้: 1,312
|
 |
« ตอบ #1 เมื่อ: 20 มีนาคม 2012, 10:35:03 » |
|
ดักด้วยการเช็คว่า หลังนามสกุลมีอะไรต่อไหม ถ้ามี . ตัวต่อไปไม่ใช่ไฟล์ภาพ jpg , gif , png , bmp ที่เหลือปล่อยให้ link ได้ ไม่ให้ link ก็ดักเพิ่มเข้าไป ลองดูได้ป่าว คิดสดผิดถูกลองเอง
|
|
|
บันทึกการเข้า
|
|
|
|
slimfit
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 13
|
 |
« ตอบ #2 เมื่อ: 21 มีนาคม 2012, 13:34:22 » |
|
ดักด้วยการเช็คว่า หลังนามสกุลมีอะไรต่อไหม ถ้ามี . ตัวต่อไปไม่ใช่ไฟล์ภาพ jpg , gif , png , bmp ที่เหลือปล่อยให้ link ได้ ไม่ให้ link ก็ดักเพิ่มเข้าไป ลองดูได้ป่าว คิดสดผิดถูกลองเอง
มีตัวอย่างซักหน่อยมั้ยครับ ผมอ่านแล้วงง ๆ ครับ
|
|
|
บันทึกการเข้า
|
|
|
|
kw4nguru
ก๊วนเสียว
พลังน้ำใจ: 21
ออฟไลน์
กระทู้: 350
|
 |
« ตอบ #3 เมื่อ: 21 มีนาคม 2012, 14:03:20 » |
|
ดักด้วย " ไำด้รึปล่าวครับ 
|
|
|
บันทึกการเข้า
|
|
|
|
NeoSmith
สมุนแก๊งเสียว
พลังน้ำใจ: 71
ออฟไลน์
กระทู้: 791
|
 |
« ตอบ #4 เมื่อ: 21 มีนาคม 2012, 14:16:39 » |
|
Replace อักษร " ' < > พวกนี้ ด้วย "" ครับ
|
|
|
บันทึกการเข้า
|
ช่วยเหลือผู้ป่วยโรคเอดส์กับทางวัดพระบาทน้ำพุง่ายๆ ด้วยการโทร 1900 222 200ครั้งละ 15 บาท รับออกแบบ-เขียนแบบ บ้าน อาคารพานิชย์ อพาร์ทเมนท์ โรงงานฯ โดยทีมวิศวกรผู้ชำนาญงานมากว่า 30 ปี หาเพื่อน,หาแฟน,หากิ๊ก นัดเพื่อน Line 
|
|
|
slimfit
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 13
|
 |
« ตอบ #5 เมื่อ: 22 มีนาคม 2012, 14:20:41 » |
|
ขอบคุณสำหรับคำแนะนำครับ if(preg_match_all("/https?:\/\/(.*)/",$messages,$matches)) { foreach($matches[0] as $key=>$value) { $replacements = "<a href='".$value."' target='_blank' title='".$value."'>$value</a>"; $massages = str_replace($value,$replacements,$messages); } }
จะเขียน Regular Expression ยังไงครับ เพื่อบอกว่า หน้า http ต้องห้ามเป็น Single Quote ( ' ) และ Double Quote ( " )
|
|
« แก้ไขครั้งสุดท้าย: 22 มีนาคม 2012, 14:27:28 โดย slimfit »
|
บันทึกการเข้า
|
|
|
|
NeoSmith
สมุนแก๊งเสียว
พลังน้ำใจ: 71
ออฟไลน์
กระทู้: 791
|
 |
« ตอบ #6 เมื่อ: 22 มีนาคม 2012, 14:23:40 » |
|
ขอบคุณสำหรับคำแนะนำครับ if(preg_match_all("/https?:\/\/(.*)/",$messages,$matches)) { ............ แทนที่ด้วยลิงค์............. } จะเขียน Regular Expression ยังไงครับ เพื่อบอกว่า หน้า http ต้องห้ามเป็น Single Quote ( ' ) และ Double Quote ( " ) ไม่ต้องห้ามหรอกครับ replace Single Quote ( ' ) และ Double Quote ( " ) ด้วย "" ไปเลย ง่ายกว่าครับ
|
|
|
บันทึกการเข้า
|
ช่วยเหลือผู้ป่วยโรคเอดส์กับทางวัดพระบาทน้ำพุง่ายๆ ด้วยการโทร 1900 222 200ครั้งละ 15 บาท รับออกแบบ-เขียนแบบ บ้าน อาคารพานิชย์ อพาร์ทเมนท์ โรงงานฯ โดยทีมวิศวกรผู้ชำนาญงานมากว่า 30 ปี หาเพื่อน,หาแฟน,หากิ๊ก นัดเพื่อน Line 
|
|
|
slimfit
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 13
|
 |
« ตอบ #7 เมื่อ: 22 มีนาคม 2012, 14:32:16 » |
|
ไม่ต้องห้ามหรอกครับ replace Single Quote ( ' ) และ Double Quote ( " ) ด้วย "" ไปเลย ง่ายกว่าครับ
replace ยังไงเหรอครับ (งง) คือผมต้องการแทนที string ด้วย link (แท็ก a) นะครับ ถ้า replace ไปมันก็ถูกแทนด้วย link อยู่ดีเพราะมันเจอเป็น url string ผมเข้าใจถูกมั้ยครับ
|
|
|
บันทึกการเข้า
|
|
|
|
NeoSmith
สมุนแก๊งเสียว
พลังน้ำใจ: 71
ออฟไลน์
กระทู้: 791
|
 |
« ตอบ #8 เมื่อ: 22 มีนาคม 2012, 14:39:19 » |
|
ไม่ต้องห้ามหรอกครับ replace Single Quote ( ' ) และ Double Quote ( " ) ด้วย "" ไปเลย ง่ายกว่าครับ
replace ยังไงเหรอครับ (งง) คือผมต้องการแทนที string ด้วย link (แท็ก a) นะครับ ถ้า replace ไปมันก็ถูกแทนด้วย link อยู่ดีเพราะมันเจอเป็น url string ผมเข้าใจถูกมั้ยครับ ก่อนหน้าที่คุณจะเอามาใส่ tag a คุณก็ควรจะลบ อักขระ ที่ไม่ต้องการออกทั้งหมดก่อนครับ ด้วยการ replace ด้วย ("") แล้วค่อยเอามา ใส่ tag a ด้วยวิธีการของคุณต่อไป ครับ
|
|
|
บันทึกการเข้า
|
ช่วยเหลือผู้ป่วยโรคเอดส์กับทางวัดพระบาทน้ำพุง่ายๆ ด้วยการโทร 1900 222 200ครั้งละ 15 บาท รับออกแบบ-เขียนแบบ บ้าน อาคารพานิชย์ อพาร์ทเมนท์ โรงงานฯ โดยทีมวิศวกรผู้ชำนาญงานมากว่า 30 ปี หาเพื่อน,หาแฟน,หากิ๊ก นัดเพื่อน Line 
|
|
|
WPDSign
Verified Seller
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 500
ออฟไลน์
กระทู้: 9,060
|
 |
« ตอบ #9 เมื่อ: 22 มีนาคม 2012, 14:45:05 » |
|
รออ่านด้วยครับ เคยลอง งง จนไม่ได้เขียนต่อ
|
|
|
บันทึกการเข้า
|
|
|
|
CMSHostThailand
บุคคลทั่วไป
|
 |
« ตอบ #10 เมื่อ: 22 มีนาคม 2012, 14:54:16 » |
|
รอเหมือนกันค่ะ เพราะเคยเช็คที่ domaintools.com แล้ว เป็นแบบนี้ กำลังหาวิธีแก้ไขอยู่พอดีเลยค่ะ รออ่านนะค่ะ 
|
|
|
บันทึกการเข้า
|
|
|
|
slimfit
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 13
|
 |
« ตอบ #11 เมื่อ: 22 มีนาคม 2012, 15:15:29 » |
|
คือเข้าใจที่คุณ NeoSmith อธิบายนะครับ แต่มันจะไม่ได้ครับ คือยังงี้ครับ สมมุติคอนเทนต์ผมเป็นดังนี้ click link <img src="http://www.thaiseoboard.com/pic1.jpg" /> นะครับ สมมุติผม Replace Single Quote และ Double Quote มันก็จะเป็น click link <img src=http://www.thaiseoboard.com/pic1.jpg /> นะครับ ทีนี้ถ้าผมเขียน Regular เพื่อเปลี่ยนจาก url format เป็น link ก็จะเป็นดังนี้ click link <img src=<a href="http://www.thaiseoboard.com/pic1.jpg">http://www.thaiseoboard.com/pic1.jpg</a> /> นะครับ ซึ่งมันผิดอะครับ
|
|
|
บันทึกการเข้า
|
|
|
|
NeoSmith
สมุนแก๊งเสียว
พลังน้ำใจ: 71
ออฟไลน์
กระทู้: 791
|
 |
« ตอบ #12 เมื่อ: 22 มีนาคม 2012, 15:24:10 » |
|
|
|
|
บันทึกการเข้า
|
ช่วยเหลือผู้ป่วยโรคเอดส์กับทางวัดพระบาทน้ำพุง่ายๆ ด้วยการโทร 1900 222 200ครั้งละ 15 บาท รับออกแบบ-เขียนแบบ บ้าน อาคารพานิชย์ อพาร์ทเมนท์ โรงงานฯ โดยทีมวิศวกรผู้ชำนาญงานมากว่า 30 ปี หาเพื่อน,หาแฟน,หากิ๊ก นัดเพื่อน Line 
|
|
|
New2th
Verified Seller
สมุนแก๊งเสียว
พลังน้ำใจ: 136
ออฟไลน์
กระทู้: 841
|
 |
« ตอบ #13 เมื่อ: 22 มีนาคม 2012, 15:47:29 » |
|
|
|
« แก้ไขครั้งสุดท้าย: 28 มิถุนายน 2017, 20:49:12 โดย New2th »
|
บันทึกการเข้า
|
|
|
|
googlerich
สมุนแก๊งเสียว
พลังน้ำใจ: 59
ออฟไลน์
กระทู้: 534
|
 |
« ตอบ #14 เมื่อ: 22 มีนาคม 2012, 16:28:01 » |
|
เอาอันนี้ไปใช้ครับ ลองเอาไปปรับปรุงดูนะครับ <?php
FUNCTION wd_makelink($thisContent){ $thisContent = TRIM($thisContent); $thisContent = HTMLSPECIALCHARS($thisContent); $thisContent = PREG_REPLACE('#(.*)\@(.*)\.(.*)#','<a href="mailto:\\1@\\2.\\3">Send email</a>',$thisContent); $thisContent = PREG_REPLACE('=([^\s]*)(www.)([^\s]*)=','<a href="http://\\2\\3" target=\'_new\'>\\2\\3</a>',$thisContent); RETURN $thisContent; } $testContent="ตามฉันมาสิ แล้วฉันจะไปหาเธอคลิกที่ลิงค์นะ http://www.seowatchtools.com/ ลองดูนะ";
echo wd_makelink($testContent); ?>
|
|
|
บันทึกการเข้า
|
|
|
|
slimfit
Newbie
พลังน้ำใจ: 0
ออฟไลน์
กระทู้: 13
|
 |
« ตอบ #15 เมื่อ: 23 มีนาคม 2012, 09:27:28 » |
|
ขอบคุณทุกคำแนะนำครับ โค้ดของคุณ googlerich ใช้ได้เลยครับ ใช้กับ url ภาษาไทยได้ด้วย (เมื่อคืนแก้ได้แต่มีปัญหาเรื่อง url ภาษาไทย  ) สุดยอดเลยครับท่าน ผมขออนุญาติแก้นิดหนึ่งนะครับเผื่อท่านอื่นจะนำไปใช้ กรณีที่เรารันบน localhost หรือเป็น ip เช่น http://192.168.0.1/www.thaiseoboard.com/ public function wd_makelink($thisContent) { $thisContent = trim($thisContent); $thisContent = htmlspecialchars($thisContent); $thisContent = preg_replace('#(.*)\@(.*)\.(.*)#','<a href="mailto:\\1@\\2.\\3">Send email</a>',$thisContent); $thisContent = preg_replace('=([^\s]*)(www.)([^\s]*)=','<a href="\\1\\2\\3" target=\'_new\'>\\1\\2\\3</a>',$thisContent); return $thisContent; } ตัวนี้จะใช้ได้กับ url อย่างเดียวถ้ามีรูปภาพแทรกเข้าไปในคอนเทนต์ด้วยก็จะใช้ไม่ได้เหมือนเดิมครับ เช่น $testContent="ตามฉันมาสิ แล้วฉันจะไปหาเธอคลิกที่ลิงค์นะ http://www.seowatchtools.com/ ลองดูนะ <img src=\"http://www.xxxx.com/pic1.jpg\" />"; พอจะมีวิธีแก้มั้ยครับ
|
|
« แก้ไขครั้งสุดท้าย: 23 มีนาคม 2012, 09:30:35 โดย slimfit »
|
บันทึกการเข้า
|
|
|
|
|