ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingการเปลี่ยนข้อความ ลักษณะ 'xxx-xxxxxxx-xxxxxxx' โดย preg_replace
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: การเปลี่ยนข้อความ ลักษณะ 'xxx-xxxxxxx-xxxxxxx' โดย preg_replace  (อ่าน 2508 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
chinakron
คนรักเสียว
*

พลังน้ำใจ: 5
ออฟไลน์ ออฟไลน์

กระทู้: 193



ดูรายละเอียด
« เมื่อ: 05 มิถุนายน 2008, 03:51:31 »

การเปลี่ยนข้อความ ลักษณะ 'xxx-xxxxxxx-xxxxxxx' โดย preg_replace
ต้องเขียนแบบไหนครับ โดยค่า 'xxx-xxxxxxx-xxxxxxx'  มีค่าไม่ซ้ำกัน แต่มีรูปแบบอย่างงี้ตลอด
คือ ชุดแรก 3 ตัว ชุดสอง 7 ตัว ชุดสาม 7ตัว
คำสั่งที่ผมใช้คือ preg_replace ครับ แต่ติดที่ค่า 'xxx-xxxxxxx-xxxxxxx' ที่เปลี่ยนตลอดเวลา


$patterns = '#xxx-xxxxxxx-xxxxxxx#';
$replacements = 'abcdefgh';

$text= preg_replace($patterns, $replacements, $text);
บันทึกการเข้า
payu
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 125
ออฟไลน์ ออฟไลน์

กระทู้: 1,881



ดูรายละเอียด
« ตอบ #1 เมื่อ: 05 มิถุนายน 2008, 09:34:41 »


ใช้ . (จุด) สิครับ จุด แทนตัวอักษรอะไรก็ได้ 1 ตัว
บันทึกการเข้า

chinakron
คนรักเสียว
*

พลังน้ำใจ: 5
ออฟไลน์ ออฟไลน์

กระทู้: 193



ดูรายละเอียด
« ตอบ #2 เมื่อ: 05 มิถุนายน 2008, 10:55:34 »


ใช้ . (จุด) สิครับ จุด แทนตัวอักษรอะไรก็ได้ 1 ตัว


ขอบคุณครับ แต่ว่าใช้แบบไหนอ่ะครับ แบบนี้ป่ะ ความรู้งูๆปลาๆครับเหอะๆ

$patterns = '#...-.......-.......#';
$patterns = '#(...)-(.......)-(.......)#';

$replacements = 'abcdefgh';

$text= preg_replace($patterns, $replacements, $text);
บันทึกการเข้า
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,459



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 05 มิถุนายน 2008, 12:29:11 »

บอกลักษณะข้อมูล input มาก่อนครับว่ายังไง (string integer หรืออะไร)
เป็นอาเรย์แยก 3 ตัว หรือยังไง (บอกไม่ละเอียด)

เอาเป็นว่าลองนี้ดูครับ อาจตรงใจ

โค๊ด:
$hook = strtoupper(md5(time().rand()));
$code = preg_replace("#(.{3})(.{7})(.{7}).*#", "\\1-\\2-\\3", $hook);
echo $code;

 Tongue
« แก้ไขครั้งสุดท้าย: 05 มิถุนายน 2008, 12:32:03 โดย EThaiZone » บันทึกการเข้า

chinakron
คนรักเสียว
*

พลังน้ำใจ: 5
ออฟไลน์ ออฟไลน์

กระทู้: 193



ดูรายละเอียด
« ตอบ #4 เมื่อ: 05 มิถุนายน 2008, 14:31:27 »

บอกลักษณะข้อมูล input มาก่อนครับว่ายังไง (string integer หรืออะไร)
เป็นอาเรย์แยก 3 ตัว หรือยังไง (บอกไม่ละเอียด)

เอาเป็นว่าลองนี้ดูครับ อาจตรงใจ

โค๊ด:
$hook = strtoupper(md5(time().rand()));
$code = preg_replace("#(.{3})(.{7})(.{7}).*#", "\\1-\\2-\\3", $hook);
echo $code;

 Tongue

ป๊าดด... ใกล้เคียงมากเลยครับ พึ่งรู้ว่าสามารถระบุ {} เพื่อแทนจำนวนสิ่งที่ใช้เปลี่ยนได้ ความรู้ใหม่+ ผมใช้ประมาณนี้ครับ

โค๊ด:
$hook = '123-4567891-1234567';
$code = preg_replace("#(.{3})-(.{7})-(.{7})#", "\\1-\\2-\\3", $hook);
echo $code;

เกือบสมบูรณ์ครับ ตอนแรกอักษรก็ไม่เหลือเลยหุๆๆๆ แต่จะแก้ให้เปลี่ยนเฉพาะ ค่า integer  อ่ะครับ ต้องเพิ่มยังไง ง
ตอนนี้ข้อความที่มีรูปแบบใกล้เคียงมันก็เปลี่ยนอ่ะ ตรวจสอบ0-9 ใช่ป่ะ

ขอบคุณหลายยย  Kiss
« แก้ไขครั้งสุดท้าย: 05 มิถุนายน 2008, 15:03:44 โดย chinakron » บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์