ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: sakang ที่ 10 พฤศจิกายน 2010, 01:43:03



หัวข้อ: php ช่วยทีครับจะใช้ preg_replace แทนอักษรอะครับ
เริ่มหัวข้อโดย: sakang ที่ 10 พฤศจิกายน 2010, 01:43:03
ฟังชั่นนี้ preg_replace ถ้าผมจะให้แทนข้อความให้มีแค่ภาษาอังกฤษ,ไทย กับวรรคจะต้องเขียนยังไงอะครับ ผมทำได้แค่นี้อะครับ

preg_replace('/([^\w\sก-๙]|_)/', '', $val21);

ตัดอักษรได้หมดแต่สระมาไม่หมด สระ โ ไม้โท สระ ไ ไม้เอก ไม่รู้มีตัวไหนอีกบ้างที่ไม่มี ไปถามที่ thaicreate มาบอกว่าแก้ได้ พร้อม output พอเอามาจริงๆก็มีแต่ภาษาอังกฤษ
 :wanwan017:
preg_replace('/([^\w\s]|_)/', '', $val2);

อันนี้เป็นส่วน code เดิม ที่บอกว่าแก้ได้
 :wanwan010:
ปล่อยให้ผมงมมา ห้า ชม

หวังว่าจะมีคนช่วยนะครับ ขอร้อง !!
 :wanwan017:


หัวข้อ: Re: php ช่วยทีครับจะใช้ preg_replace แทนอักษรอะครับ
เริ่มหัวข้อโดย: Tee++; ที่ 10 พฤศจิกายน 2010, 01:59:37
พอดีวันนี้นอนดึก ....

โค๊ด:
preg_replace('/([^\w\sก-๙]|_)/u', '', $val21);

ใส่ modifier u ไปอีกตัวนึง

อ้างถึง
u (PCRE8)
    This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32. UTF-8 validity of the pattern is checked since PHP 4.3.5.


http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php


หัวข้อ: Re: php ช่วยทีครับจะใช้ preg_replace แทนอักษรอะครับ
เริ่มหัวข้อโดย: sakang ที่ 10 พฤศจิกายน 2010, 02:37:04
ขอบคุณครับ แต่มันหายหมดเลยอะครับ หนักกว่าของเดิมอีก มีอีกวิธีไหมอะครับ
 :wanwan006: :wanwan009:
โค๊ด:
$str[] = 'ทดส้อบ';
$str[] = 'PB จัดเต็มต่อเนื่องไม่ยั้งมือ กับกิจกรรม “แจกปืนทุกวัน มันส์ต่อเนื่อง” เปิดฤกษ์.';
$str[] = 'Tartaros : ระบบการแยกชิ้นส่วนที่ไม่ควรมองข้าม';
$str[] = 'Adafruit Industries ประกาศ ใคร Hack Kinect ได้ เอาไปเลย 2,000$';
$str[] = 'BOOMz จัดกีฬาสี ทั้งทีเพื่อนๆ จะพลาดได้ไง_ (ต้อนรับเอเชียนเกมที่กว่างโจว)';
$str[] = 'OSGU ร่วมกับ Raycity ส่งกองทัพไอเทมแต่งรถพร้อม Car Romans, Car Vital ให้สมาชิกตล.';
$str[] = 'จัดไป! OSGU ส่งไอเทมพิเศษให้ขาแซ๊ต Grand Fantasia กับ Megaphone ตลอดเดือน พศจิกา.';
$str[] = 'asdfaf!adfasdf !asdfsdf[]\s999';
print_r($str);
print "<br /><br />";

foreach ($str as $val)
{
$val2 = iconv('UTF-8', 'TIS620', $val);

$val2 = preg_replace('/([^\w\s]|_)/', '', $val2);

echo iconv('TIS620', 'UTF-8', $val2), '<br />';
}

code ที่ใช้ลองอะครับ รบกวนทีครับ

out put
อ้างถึง
PB
Tartaros
Adafruit Industries Hack Kinect 2000
BOOMz
OSGU Raycity Car Romans Car Vital
OSGU Grand Fantasia Megaphone
asdfafadfasdf asdfsdfs999


หัวข้อ: Re: php ช่วยทีครับจะใช้ preg_replace แทนอักษรอะครับ
เริ่มหัวข้อโดย: massacre ที่ 10 พฤศจิกายน 2010, 05:46:22
ท่านด้านบน เขาแนะนำให้ใช้
โค๊ด:
preg_replace('/([^\w\sก-๙]|_)/u', '', $val21)
นี่ครับ


หัวข้อ: Re: php ช่วยทีครับจะใช้ preg_replace แทนอักษรอะครับ
เริ่มหัวข้อโดย: sakang ที่ 10 พฤศจิกายน 2010, 07:11:11
ใส่ไปแล้วครับ ที่เอามาเป็นตัวที่มีอยู่ก่อนเอาชุดนั้นไปแก้ไขครับ
 :wanwan023: :wanwan022:


หัวข้อ: Re: php ช่วยทีครับจะใช้ preg_replace แทนอักษรอะครับ
เริ่มหัวข้อโดย: Tee++; ที่ 10 พฤศจิกายน 2010, 11:39:55
อะไรเนี่ย นี่มันมั่วไปหมดแล้ว

1. ตรงนี้ iconv ทำไมครับ ใช้ UTF-8 ดีๆ อยู่แล้ว
$val2 = iconv('UTF-8', 'TIS620', $val);

2. ตรงนี้ต้องเติม modifier u ไปด้วย
$val2 = preg_replace('/([^\w\s]|_)/u', '', $val2);


หัวข้อ: Re: php ช่วยทีครับจะใช้ preg_replace แทนอักษรอะครับ
เริ่มหัวข้อโดย: sakang ที่ 10 พฤศจิกายน 2010, 16:38:40
นั้นแหละครับ ผมเอาไปใส่แล้ว อาเรย์อื่นๆหายหมดเลย เหลือแต่อันสุดท้าย
โค๊ด:






asdfafadfasdf asdfsdfs999

เหลือแค่เนียอะครับ

อยากให้มันแสดงผลออกมาแบบนี้อะครับ
โค๊ด:
ทดส้อบ
PB จัดเต็มต่อเนื่องไม่ยั้งมือ กับกิจกรรม
Tartaros ระบบการแยกชิ้นส่วนที่ไม่ควรมองข้าม
Adafruit Industries ประกาศ ใคร Hack Kinect ได้ เอาไปเลย 2000
BOOMz จัดกีฬาสี ทั้งทีเพื่อนๆ จะพลาดได้ไง ต้อนรับเอเชียนเกมที่กว่างโจว
OSGU ร่วมกับ Raycity ส่งกองทัพไอเทมแต่งรถพร้อม Car Romans Car Vital ให้สมาชิกตล
จัดไป OSGU ส่งไอเทมพิเศษให้ขาแซ๊ต Grand Fantasia กับ Megaphone ตลอดเดือน พศจิกา
asdfafadfasdf asdfsdfs999

จาก
โค๊ด:
ทดส้อบ
PB จัดเต็มต่อเนื่องไม่ยั้งมือ กับกิจกรรม
Tartaros : ระบบการแยกชิ้นส่วนที่ไม่ควรมองข้าม
Adafruit Industries ประกาศ ใคร Hack Kinect ได้ เอาไปเลย 2,000$
BOOMz จัดกีฬาสี ทั้งทีเพื่อนๆ จะพลาดได้ไง_ (ต้อนรับเอเชียนเกมที่กว่างโจว)
OSGU ร่วมกับ Raycity ส่งกองทัพไอเทมแต่งรถพร้อม Car Romans, Car Vital ให้สมาชิกตล.
จัดไป! OSGU ส่งไอเทมพิเศษให้ขาแซ๊ต Grand Fantasia กับ Megaphone ตลอดเดือน พศจิกา.
asdfaf!adfasdf !asdfsdf[]\s999
:wanwan017:


หัวข้อ: Re: php ช่วยทีครับจะใช้ preg_replace แทนอักษรอะครับ
เริ่มหัวข้อโดย: WPDSign ที่ 10 พฤศจิกายน 2010, 16:59:04
<?php
$string_to_replace = array ("+" , "/"');
$string_after_replace  = array (" " , " ");
$key_explode = str_replace($string_to_replace , $string_after_replace , $resultb['title'] , $count);
echo $key_explode;
?>

เครดิต คุณ kongpair


หัวข้อ: Re: php ช่วยทีครับจะใช้ preg_replace แทนอักษรอะครับ
เริ่มหัวข้อโดย: zankumuro ที่ 10 พฤศจิกายน 2010, 17:06:31
เอาของผมไหมครับบ้านๆเลย ตามปกติใน Regular expressions ก-๙ จะหมายถึงพยัญชนะไทยและสระทุกตัว รวมเลขไทยด้วย แต่เอาไปใช้งานจริงๆแล้ว ที่ผมเป็นคือสระ เ- มันกลายเป็นสี่เหลี่ยมซะงั้นเลยแก้ปัญหาด้วย

$val2 = preg_replace('/([^a-zA-Z0-9ก-๙เ])/', '', $val);

ลองดู  :wanwan020:


หัวข้อ: Re: php ช่วยทีครับจะใช้ preg_replace แทนอักษรอะครับ
เริ่มหัวข้อโดย: sakang ที่ 10 พฤศจิกายน 2010, 18:01:39
<?php
$string_to_replace = array ("+" , "/"');
$string_after_replace  = array (" " , " ");
$key_explode = str_replace($string_to_replace , $string_after_replace , $resultb['title'] , $count);
echo $key_explode;
?>

เครดิต คุณ kongpair

ได้แล้วครับ ขอบคุณครับ