จะใช้ php ตัด -- (ขีดกลางสองอัน) ได้ไงครับ

เริ่มโดย kinkow, 01 กันยายน 2010, 23:26:35

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

kinkow

สืบเนื่องจากกระทู้นี้ http://www.thaiseoboard.com/index.php/topic,136243.msg1805893.html#msg1805893

คือผมจะ rewrite url น่ะครับ

ผมใช้โค้ดแบบนี้

   $str = $arr[name];
   $str = str_replace(' ', '-', $str);
   $str = ereg_replace("[^A-Za-z0-9-]", "", $str );

ซึ่งหลักการคือ

รับค่าเข้าเป็น str > แทนที่ช่องว่างด้วย - ( ขีดกลาง ) > ตัดตัวอักษรพิเศษออกไป > นำไปใช้งาน



ผลมันก็ออกมาโอเคนะครับ ออก เช่น

ค่าในสตริงเป็น      Eva Longoria Sexy (HIGH QUALITY)
ผลที่ออกมาจะเป็น Eva-Longoria-Sexy-HIGH-QUALITY ซึ่งก็นำเอาไป ทำเป็น Link เพื่อ Rewrite url ได้

ปัญหาคือ ถ้าชื่อหัวข้อมันมี - ( ขีดกลาง ) อยู่แล้ว มันจะกลายเป็น --( ขีดกลางสองขีด )

เช่น

NEZ - Sexy Singer กลายเป็น NEZ---Sexy-Singer
หรือ
NEZ Sexy- Singer มันจะกลายเป็น NEZ-Sexy--Singer

มันจะออกมาเป็น  อ่ะครับ

จะทำอย่างไรดีถึงจะให้ขีดกลางมันหายไปก่อนดีครับ



คนเราไม่มีใครเก่งได้ทุกเรื่อง มีแค่รู้หรือไม่รู้เท่านั้นแหละ ฉลาดเรื่องนึง แต่อาจจะโง่เรื่องนึง

kinkow

#1
เวนกำจริง คิดออกกระทันหัน มั่วจนใช้ได้ ( แต่ยังแนะนำวิธีการเขียนแบบเซียนๆให้ผมได้นะครับ อิอิ )

ใส่แบบนี้ครับ

   $str = $arr[name]; < --- รับค่ามา
   $str = str_replace('-', '', $str); < ---- ตัดขีดกลางออกไปก่อนสิ
   $str = str_replace(' ', '-', $str); < ---- แทนที่ช่องว่างด้วย ขีดกลาง
   $str = ereg_replace("[^A-Za-z0-9-]", "", $str );  < ---- ลบอักษรพิเศษทิ้งไป

เย้  :-[ อายจัง
คนเราไม่มีใครเก่งได้ทุกเรื่อง มีแค่รู้หรือไม่รู้เท่านั้นแหละ ฉลาดเรื่องนึง แต่อาจจะโง่เรื่องนึง

vii

แบบนี้ระวังการ input ที่มีขีดกลางจะหายไปเลยนะครับ เช่น a-game จะกลายเป็น agame ไป

น่าจะเปลี่ยน space ไปเป็นขีดล่างแทน a game - starcraft -> เป็น a_game_-_starcraft แล้วอาจจะทำการ replace _- กับ _-_ ไปเป็น - อีกทีหนึ่ง
[direct=https://rundiz.com]PHP, HTML, JS, CSS[/direct]

massacre

ลองใช้ function นี้ครับ

function url_friendly($param){
$ret = preg_replace("/[^a-zA-Z0-9]+/u", "-", $param);
$ret = preg_replace("/^-|-$/", '', $ret);
      
return $ret;
}

kinkow

ขอบคุณทั้งสองท่านมากครับ น้อมรับไปศึกษาเพิ่มเติมขอรับ  :wanwan011:
คนเราไม่มีใครเก่งได้ทุกเรื่อง มีแค่รู้หรือไม่รู้เท่านั้นแหละ ฉลาดเรื่องนึง แต่อาจจะโง่เรื่องนึง

bouy22

สนใจทำธุรกิจ[direct=http://www.nongphojsin.com/]ไอศกรีมหนองโพ[/direct]คลิกเลย | ลงประกาศโฆษณา [direct=http://www.marukopost.com/]ประกาศฟรี[/direct] | [direct=http://www.uuppic.com/]เว็บฝากรูป[/direct] | [direct=http://www.jeedgame.com/]สคริปเกมแฟลช[/direct] |
ผลิตภัณฑ์เสริมอาหารออกซิเจนน้ำ [direct=http://www.adoxy-thai.com/]Adoxy[/direct]

woratana

ไม่ควรใช้ _ นะครับ เพราะว่า Google จะไม่มอง _ เป็นตัวแยกคำครับ แต่ Google จะมอง - เป็นตัวแยกคำครับ

เช่น this-is-a-book

แล้วก็ส่วนตัวคิดว่าถ้า space bar เยอะ ๆ เปลี่ยนให้เป็น - ตัวเดียวดีกว่าครับ เป็น -- แล้วมันแปลก ๆ อยู่  :P
[direct=http://www.designil.com/contact-us]DesignIL เรียนเทคนิคเว็บดีไซน์ใหม่ ๆ ฟรี!! รับทำเว็บไซต์ เว็บดีไซน์ ธีม WordPress
[direct=http://www.designil.com/]DesigNIL: สอนออกแบบเว็บไซด์ Web Design HTML5 CSS3
[/direct]

kinkow

อ้างถึงจาก: woratana ใน 02 กันยายน 2010, 00:32:33
ไม่ควรใช้ _ นะครับ เพราะว่า Google จะไม่มอง _ เป็นตัวแยกคำครับ แต่ Google จะมอง - เป็นตัวแยกคำครับ

เช่น this-is-a-book

แล้วก็ส่วนตัวคิดว่าถ้า space bar เยอะ ๆ เปลี่ยนให้เป็น - ตัวเดียวดีกว่าครับ เป็น -- แล้วมันแปลก ๆ อยู่  :P

+1 เช่นกันครับ ว่าแต่เรื่องตัวอักษรเล็กใหญ่ล่ะครับ ใช้แบบใหนดี
คนเราไม่มีใครเก่งได้ทุกเรื่อง มีแค่รู้หรือไม่รู้เท่านั้นแหละ ฉลาดเรื่องนึง แต่อาจจะโง่เรื่องนึง

woratana

ตัวเล็กหมดก็ดีนะครับผมว่า มันดูอ่านง่ายดี  :wanwan019:

คิดว่าไม่ค่อยมีผลเท่าไรครับ ตัวเล็กตัวใหญ่
[direct=http://www.designil.com/contact-us]DesignIL เรียนเทคนิคเว็บดีไซน์ใหม่ ๆ ฟรี!! รับทำเว็บไซต์ เว็บดีไซน์ ธีม WordPress
[direct=http://www.designil.com/]DesigNIL: สอนออกแบบเว็บไซด์ Web Design HTML5 CSS3
[/direct]

vii

อ้างถึงจาก: woratana ใน 02 กันยายน 2010, 00:32:33
ไม่ควรใช้ _ นะครับ เพราะว่า Google จะไม่มอง _ เป็นตัวแยกคำครับ แต่ Google จะมอง - เป็นตัวแยกคำครับ

เช่น this-is-a-book

แล้วก็ส่วนตัวคิดว่าถ้า space bar เยอะ ๆ เปลี่ยนให้เป็น - ตัวเดียวดีกว่าครับ เป็น -- แล้วมันแปลก ๆ อยู่  :P

อย่างนี้คนใช้ framework ก็ตายซิครับมาบังคับประหลาดๆแบบนี้

ตัวอย่าง /send_to_friend จะเรียก class send_to_friend extends controller { } มาทำงาน

ถ้าบังคับแบบนี้ ก็จะกลายเป็น send-to-friend มันจะเขียนยังไงละครับนี่ class send-to-friend extends controller { } Error กันหมดพอดี  :-X

...
http://forums.searchenginewatch.com/showthread.php?t=6460  :'( โอวว..ทำไมเป็นยังงี้
[direct=https://rundiz.com]PHP, HTML, JS, CSS[/direct]

sunkoster

จากประสบการณ์
+ ใน คิวรี่สคริง คือ ต่อคำ
_ ใน คิวรี่สคริง คือ แยกคำ
- ใน คิวรี่สคริง คือ แยกคำ
[direct=http://zfind.item69.com/]amazon advance search products[/direct] | [direct=http://zfind.item69.com/]amazon[/direct]

kitazawa1st

อ้างถึงจาก: vii ใน 02 กันยายน 2010, 05:27:53
อ้างถึงจาก: woratana ใน 02 กันยายน 2010, 00:32:33
ไม่ควรใช้ _ นะครับ เพราะว่า Google จะไม่มอง _ เป็นตัวแยกคำครับ แต่ Google จะมอง - เป็นตัวแยกคำครับ

เช่น this-is-a-book

แล้วก็ส่วนตัวคิดว่าถ้า space bar เยอะ ๆ เปลี่ยนให้เป็น - ตัวเดียวดีกว่าครับ เป็น -- แล้วมันแปลก ๆ อยู่  :P

อย่างนี้คนใช้ framework ก็ตายซิครับมาบังคับประหลาดๆแบบนี้

ตัวอย่าง /send_to_friend จะเรียก class send_to_friend extends controller { } มาทำงาน

ถ้าบังคับแบบนี้ ก็จะกลายเป็น send-to-friend มันจะเขียนยังไงละครับนี่ class send-to-friend extends controller { } Error กันหมดพอดี  :-X

...
http://forums.searchenginewatch.com/showthread.php?t=6460  :'( โอวว..ทำไมเป็นยังงี้

จขกท จะเอาไปใช้กับ mod_rewrite ครับ ไม่ได้ใช้เรียกคอนโทลเลอร์

ส่วนโปรแกรมเมอร์ที่เขียนเองก็น่าจะเข้าใจว่าจะใช้แบบไหน ใช้ทำอะไร

:P :P :P
เล็กสั้น ขยันซอย

kinkow

อ้างถึงจาก: massacre ใน 02 กันยายน 2010, 00:12:54
ลองใช้ function นี้ครับ

function url_friendly($param){
$ret = preg_replace("/[^a-zA-Z0-9]+/u", "-", $param);
$ret = preg_replace("/^-|-$/", '', $ret);
      
return $ret;
}

จากการทดลองแล้ว ถ้าจะเอาชื่อหัวข้อ มาทำเป็น url rewrite อันนี้ work ที่สุดครับ แก้ได้หมดทุกปัญหาเลย
ขอบคุณมากๆครับ
คนเราไม่มีใครเก่งได้ทุกเรื่อง มีแค่รู้หรือไม่รู้เท่านั้นแหละ ฉลาดเรื่องนึง แต่อาจจะโง่เรื่องนึง

kudjung

อ้างถึงจาก: kinkow ใน 03 กันยายน 2010, 21:21:10
อ้างถึงจาก: massacre ใน 02 กันยายน 2010, 00:12:54
ลองใช้ function นี้ครับ

function url_friendly($param){
$ret = preg_replace("/[^a-zA-Z0-9]+/u", "-", $param);
$ret = preg_replace("/^-|-$/", '', $ret);
      
return $ret;
}

จากการทดลองแล้ว ถ้าจะเอาชื่อหัวข้อ มาทำเป็น url rewrite อันนี้ work ที่สุดครับ แก้ได้หมดทุกปัญหาเลย
ขอบคุณมากๆครับ

ไม่รับภาษาไทยหรือครับ

xvlnw.com

#14
ไม่เทพครับ แต่อยากเขียนมั้ง

function rewrite_url($url="url"){
$url = strtolower(str_replace(" ","-",$url));
$url = strtolower(preg_replace('~[^a-z0-9ก-๙\.\-\_]~iu','',$url));
return $url ;
}


เอาไปใช้ถูกใจ มันต้อแต้ง ฮ๋า ๆ
:wanwan004: :wanwan004: :wanwan004:
[direct=https://cloudhost.in.th/wordpress-hosting]ツ ⓌⓄⓇⒹⓅⓇⒺⓈⓈ ⒽⓄⓈⓉⒾⓃⒼ [/direct] :wanwan014:  :D
[direct=https://cloudhost.in.th/cloudhosting.html]Cloud Hosting[/direct] [direct=https://cloudhost.in.th/cloudvps.html]Cloud Server[/direct] [direct=https://cloudhost.in.th/vpshosting.html]Cloud VPS Hosting[/direct] [direct=https://cloudhost.in.th/windowsvps.html]Cloud Windows[/direct] Tel: 080-348-0843 LINE: ixvlnw

aek26

ของ auto estore ใช้แบบนี้ครับ

อันนี้ตัดซ่อม title ครับ

function sanitize_title($title) {
$title = strip_tags($title);
// Preserve escaped octets.
$title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
// Remove percent signs that are not part of an octet.
$title = str_replace('%', '', $title);
// Restore octets.
$title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);

$title = strtolower($title);
$title = preg_replace('/&.+?;/', '', $title); // kill entities
$title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
$title = preg_replace('/\s+/', '-', $title);
$title = preg_replace('|-+|', '-', $title);
$title = trim($title, '-');

$title = substr($title, 0, 50);
$title = str_replace("--", "-", $title);
$title = str_replace("--", "-", $title);
return $title;
}


อันนี้สร้าง permalink ครับ

function get_permalink($asin, $title) {
$permalink = sanitize_title($title).'-'.$asin;
$permalink = str_replace("--","-",$permalink);
return $permalink;
}


ตัดได้ละเอียดดีครับ เผื่อเป็นประโยชน์ ลองดูครับ :wanwan019:
เพราะแสวงหา มิใช่เพราะรอคอย เพราะเชี่ยวชาญ มิใช่เพราะโอกาส เพราะสามารถ มิใช่เพราะโชคช่วย ดังนี้แล้ว "ลิขิตฟ้าหรือจะสู้มานะตน"
[direct=http://www.108keychain.com]พวงกุญแจ[/direct]
[direct=http://www.xn--12cgajg3a0jxbsn4esb4cb5c7i.com]พวงกุญแจอะคริลิค[/direct]
[direct=http://www.xn--12clet6fwa1b4j8c5a0d.com]พวงกุญแจไม้[/direct]
[direct=http://www.facebook.com/108keychain]ของชำร่วย[/direct]

kudjung

อ้างถึงจาก: xvlnw.com ใน 03 กันยายน 2010, 22:51:26
ไม่เทพครับ แต่อยากเขียนมั้ง

function rewrite_url($url="url"){
$url = strtolower(str_replace(" ","-",$url));
$url = strtolower(preg_replace('~[^a-z0-9ก-๙\.\-\_]~iu','',$url));
return $url ;
}


เอาไปใช้ถูกใจ มันต้อแต้ง ฮ๋า ๆ
:wanwan004: :wanwan004: :wanwan004:


$text="  นายอำเภอ--123456     testlเสือไม่ทิ้งลาย มิว่าน่ารักจัง ๑๒๓๔๕๖๗
% $ # @*&()
ภภภ  มะภสภถก่า ";

function rewrite_url($url="url"){
$url = strtolower(str_replace(" ","-",$url));
$url = strtolower(preg_replace('~[^a-z0-9ก-๙\.\-\_]~iu','',$url));
$url = preg_replace("/[\-]{2,}/",'-',$url);
$url = trim($url, '-');
return $url ;
}

echo rewrite_url($text);

bouy22

สนใจทำธุรกิจ[direct=http://www.nongphojsin.com/]ไอศกรีมหนองโพ[/direct]คลิกเลย | ลงประกาศโฆษณา [direct=http://www.marukopost.com/]ประกาศฟรี[/direct] | [direct=http://www.uuppic.com/]เว็บฝากรูป[/direct] | [direct=http://www.jeedgame.com/]สคริปเกมแฟลช[/direct] |
ผลิตภัณฑ์เสริมอาหารออกซิเจนน้ำ [direct=http://www.adoxy-thai.com/]Adoxy[/direct]

kinkow

ตอนนี้มีปัญหากับภาษาไทยนี่แหละครับ

จะใช้แบบใหนดี  :-X
คนเราไม่มีใครเก่งได้ทุกเรื่อง มีแค่รู้หรือไม่รู้เท่านั้นแหละ ฉลาดเรื่องนึง แต่อาจจะโง่เรื่องนึง

woratana

อ้างถึงจาก: vii ใน 02 กันยายน 2010, 05:27:53
อ้างถึงจาก: woratana ใน 02 กันยายน 2010, 00:32:33
ไม่ควรใช้ _ นะครับ เพราะว่า Google จะไม่มอง _ เป็นตัวแยกคำครับ แต่ Google จะมอง - เป็นตัวแยกคำครับ

เช่น this-is-a-book

แล้วก็ส่วนตัวคิดว่าถ้า space bar เยอะ ๆ เปลี่ยนให้เป็น - ตัวเดียวดีกว่าครับ เป็น -- แล้วมันแปลก ๆ อยู่  :P

อย่างนี้คนใช้ framework ก็ตายซิครับมาบังคับประหลาดๆแบบนี้

ตัวอย่าง /send_to_friend จะเรียก class send_to_friend extends controller { } มาทำงาน

ถ้าบังคับแบบนี้ ก็จะกลายเป็น send-to-friend มันจะเขียนยังไงละครับนี่ class send-to-friend extends controller { } Error กันหมดพอดี  :-X

...
http://forums.searchenginewatch.com/showthread.php?t=6460  :'( โอวว..ทำไมเป็นยังงี้
อันนี้ผมไปดูจากวีดิโอของ Matt Cutts ใน Youtube ของ Google Webmaster มาเลยครับ ข้อมูลตรงชัวร์  :-[

ส่วนสำหรับพวก Framework เนี่ย พอดีใช้เป็นแต่ CodeIgniter นะครับ ตัว CI นี่มีความสามารถในการเซ็ตสิ่งที่เรียกว่า Route ครับ ทำให้เราตั้ง URL ส่วนตัวขึ้นมาเองได้โดยไม่ต้องสนใจชื่อ Controller ครับผม
[direct=http://www.designil.com/contact-us]DesignIL เรียนเทคนิคเว็บดีไซน์ใหม่ ๆ ฟรี!! รับทำเว็บไซต์ เว็บดีไซน์ ธีม WordPress
[direct=http://www.designil.com/]DesigNIL: สอนออกแบบเว็บไซด์ Web Design HTML5 CSS3
[/direct]