- เครดิต
- 1495
- เพื่อน
- ทักทาย
- บล็อก
- อัลบั้ม
- โพสต์
- กระทู้
- แชร์
- สำคัญ
- สิทธิ์อ่าน
- 50
- จำนวนผู้ติดตาม
- จำนวนผู้กำลังติดตาม
- เพศ
- ไม่บอก
|
แก้ไขครั้งสุดท้ายโดย S¡|€n7 เมื่อ 2012-3-19 11:22
Link in/out แบบ discuzthai.com (Link out ธรรมดาที่ไม่ธรรมดา)
ตามหัวข้อเลยครับ คือเป็นการทำ Link out ธรรมดา ให้มันไม่ธรรมดา บางท่านอาจจะงง ว่ามันแปลกแต่กต่างกับที่คนอื่นเค้าทำยังไงกัน ถึงต้องตั้งกระทู้ใหม่ มันก็ต่างกันนิดเดียวครับ
ผมสรุปสั้น ๆ ง่าย ๆ เลยแล้วกัน เอาลักษณะถาม/ตอบเลยนะ คือการทำ Link out แบบเดิม ๆ คือ
Q: ไม่ว่าจะใส่ url ไหนเข้าไปมันก็จะทำ link out หมดใช่ไหม
A: ใช่
Q: บางคนที่หน้า link out แอบใส่ meta tag noindex,nofollow ไปด้วยใช่ไหม
A: ใช่/ไม่ใช่/ไม่รู้
สำหรับท่านที่ตอบว่าใช่ ดูคำถามต่อไป ถ้าใครตอบว่าไม่ใช่ หรือไม่รู้ก็แล้วแต่ครับอ่านก็ได้ไม่ว่ากัน
Q: ใส่ noindex, nofollow ในหน้า link out มันกระทบกับตัวเองด้วยนะ เพราะบางครั้ง link out เข้าเว็บเราเอง
A: เออจริง/อาจจะจริง/ไม่รู้
แล้วแย่างนี้ท่านจะทำ link out แบบเดิม ๆ เพื่อฆ่าตัวเองหรอ ผมเลยจะแนะนำไง ถ้าคิดรูปแบบไม่ออก ก็นี่ไง discuzthai.com ถ้าท่านไม่ครอบ link นอกมันก็เป็น link out แต่ไม่ครอบ link ในก็ไม่เป็น link out เห้นไหม มันต่างกัน
มาเจาะกันเลยดีกว่า
/source/function/function_discuzcode.php เดิม ๆ นะ- function parseurl($url, $text, $scheme) {
- global $_G;
- if(!$url && preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.)[^\["']+/i", trim($text), $matches)) {
- $url = $matches[0];
- $length = 65;
- if(strlen($url) > $length) {
- $text = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
- }
- return '<a href="'.(substr(strtolower($url), 0, 4) == 'www.' ? 'http://'.$url : $url).'" target="_blank">'.$text.'</a>';
- } else {
- $url = substr($url, 1);
- if(substr(strtolower($url), 0, 4) == 'www.') {
- $url = 'http://'.$url;
- }
- $url = !$scheme ? $_G['siteurl'].$url : $url;
- return '<a href="'.$url.'" target="_blank">'.$text.'</a>';
- }
- }
คัดลอกไปที่คลิปบอร์ด อันนี้ดักจับถ้าเป็น link in ไม่ต้องเด้งไปไฟล์ link out ถ้าเป้น link out ก็เหมือนเดิม- function parseurl($url, $text, $scheme) {
- global $_G;
- if(!$url && preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.)[^\["']+/i", trim($text), $matches)) {
- if(preg_match("/(เว็บไซต์\.)[^\["']+/i", trim($text), $matches)) {
- $url = $matches[0];
- $length = 65;
- if(strlen($url) > $length) {
- $text = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
- }
- return '<a href="'.(substr(strtolower($url), 0, 4) == 'www.' ? 'http://'.$url : $url).'" target="_blank">'.$text.'</a>';
- } else {
- $url = $matches[0];
- $length = 65;
- if(strlen($url) > $length) {
- $text = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
- }
- return '<a href="./ไฟล์ link out ของท่าน.php?ตัวแปรที่ใช้ในการส่งค่าของท่าน='.(substr(strtolower($url), 0, 4) == 'www.' ? 'http://'.$url : $url).'" target="_blank">'.$text.'</a>';
- }
- } else {
- if(preg_match("/(เว็บไซต์\.)[^\["']+/i", $url, $matches)) {
- $url = substr($url, 1);
- if(substr(strtolower($url), 0, 4) == 'www.') {
- $url = 'http://' . $url;
- }
- $url = !$scheme ? $_G['siteurl'] . $url : $url;
- return '<a href="' . $url . '" target="_blank">' . $text . '</a>';
- } else {
- $url = substr($url, 1);
- if(substr(strtolower($url), 0, 4) == 'www.') {
- $url = 'http://' . $url;
- }
- $url = !$scheme ? $_G['siteurl'] . $url : $url;
- return '<a href="./ไฟล์ link out ของท่าน.php?ตัวแปรที่ใช้ในการส่งค่าของท่าน=' . $url . '" target="_blank">' . $text . '</a>';
- }
- }
- }
คัดลอกไปที่คลิปบอร์ด แค่นี้แหละ เรียบร้อยแล้ว ขอให้มีความสุขกับอันดับที่เพิ่มขึ้นใน google นะ
ขออธิบายเพิ่มสักนิดเกี่ยวกับฟังก์ชัน preg_match
หลักการทำงานของมันก็คือ ตรวจสอบตาม regexp (เรกูลา เอ็กเพรสชัน), จาก String (สายข้อความ), แล้วส่งค่ากลับเป็น boolean (บูลีนให้เพียงค่าถูก กับผิด, T กับ F, 0 กับ 1)
ณ. ที่นี้ คำสั่ง preg_match ในการตรวจสอบของเราที่เพิ่มเข้าไปใหม่นั้นมี 2 จุด คือ- if(preg_match("/(เว็บไซต์\.)[^\["']+/i", trim($text), $matches)) {
คัดลอกไปที่คลิปบอร์ด อันนี้สำหรับการพิมพ์ www.hostname.domain (พิมพ์ url) เข้ามาโดยตรง(ตัว editor จะแปลง BB code หรือใส่ลิงค์ให้เราอัตโนมัติก่อนเซฟลงฐานข้อมูล) และ- if(preg_match("/(เว็บไซต์\.)[^\["']+/i", $url, $matches)) {
คัดลอกไปที่คลิปบอร์ด อันนี้สำหรับการพิมพ์ [ url = h--p://www.hostname.domain ] ข้อความ [/ url ] เข้ามา สำหรับท่าที่อยากเข้ารหัส link out อ่ะ เสนอแนะกันต่อรู้นะความต้องการของคนเรามีไม่สิ้นสุดหรอก ผมสนองให้- function parseurl($url, $text, $scheme) {
- global $_G;
- if(!$url && preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.)[^\["']+/i", trim($text), $matches)) {
- if(preg_match("/(เว็บไซต์\.)[^\["']+/i", trim($text), $matches)) {
- $url = $matches[0];
- $length = 65;
- if(strlen($url) > $length) {
- $text = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
- }
- return '<a href="'.(substr(strtolower($url), 0, 4) == 'www.' ? 'http://'.$url : $url).'" target="_blank">'.$text.'</a>';
- } else {
- $url = $matches[0];
- $length = 65;
- if(strlen($url) > $length) {
- $text = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
- }
- return '<a href="./ไฟล์ link out ของท่าน.php?ตัวแปรที่ใช้ในการส่งค่าของท่าน='.base64_encode(substr(strtolower($url), 0, 4) == 'www.' ? 'http://'.$url : $url).'" target="_blank">'.$text.'</a>';
- }
- } else {
- if(preg_match("/(เว็บไซต์\.)[^\["']+/i", $url, $matches)) {
- $url = substr($url, 1);
- if(substr(strtolower($url), 0, 4) == 'www.') {
- $url = 'http://' . $url;
- }
- $url = !$scheme ? $_G['siteurl'] . $url : $url;
- return '<a href="' . $url . '" target="_blank">' . $text . '</a>';
- } else {
- $url = substr($url, 1);
- if(substr(strtolower($url), 0, 4) == 'www.') {
- $url = 'http://' . $url;
- }
- $url = !$scheme ? $_G['siteurl'] . $url : $url;
- return '<a href="./ไฟล์ link out ของท่าน.php?ตัวแปรที่ใช้ในการส่งค่าของท่าน=' . base64_encode($url) . '" target="_blank">' . $text . '</a>';
- }
- }
- }
คัดลอกไปที่คลิปบอร์ด จริง ๆ แล้วไม่ได้เพิ่มอะไรมากมายเลยแค่ base64_encode() เท่านั้น แต่อย่าถือไปใส่ base64_decode() ที่ไฟล์ link out ด้วยนะ ตามตัวอย่าง
ของเดิม- foreach($_GET as $key => $value) {
- $site .= $key . '=' . $value . '&';
- }
- $site = substr($site, 8, -1);
คัดลอกไปที่คลิปบอร์ด เปลี่ยนเป็น- foreach($_GET as $key => $value) {
- $site .= $key . '=' . $value . '&';
- }
- $site = base64_decode(substr($site, 8, -1));
คัดลอกไปที่คลิปบอร์ด เท่านี้ก็เรีบร้อย ครบถ้วนกระบวนท่า |
คะแนน
-
ดูบันทึกคะแนน
|