หัวข้อ: สอบถามการ php textarea split line แบบ multi split เริ่มหัวข้อโดย: Mrpoohling ที่ 27 กุมภาพันธ์ 2017, 07:28:13 ตัวอย่าง textarea รับค่ามาแบบนี้ครับ
$textarea ="5658745##category=10001##price=1000"; โดยให้สามารถใส่สลับแบบนี่ก็ได้ $textarea ="5658745##price=1000##category=10001"; และต้องการให้แยกเป็นแบบนี้ 5658745 คือ id 10001 คือ category 1000 คือ price ---- ผมลองใช้ explode('##', $textarea); มาช่วยแต่เวลา สลับ category กับ price Array มันจะอ่านไม่ตรง :P รบกวนด้วยครับผม หัวข้อ: Re: สอบถามการ php textarea split line แบบ multi split เริ่มหัวข้อโดย: pinkam0327 ที่ 27 กุมภาพันธ์ 2017, 09:01:36 preg_match น่าจะพอช่วยได้นะครับ ลองเล่นดูครับ http://www.phpliveregex.com/
โค๊ด: preg_match("/price=([0-9]+)/", $input_line, $output_array); หัวข้อ: Re: สอบถามการ php textarea split line แบบ multi split เริ่มหัวข้อโดย: Mrpoohling ที่ 27 กุมภาพันธ์ 2017, 09:25:24 preg_match น่าจะพอช่วยได้นะครับ ลองเล่นดูครับ [url]http://www.phpliveregex.com/[/url] โค๊ด: preg_match("/price=([0-9]+)/", $input_line, $output_array); ขอบคุณคัรบ เด่วลองแปป หัวข้อ: Re: สอบถามการ php textarea split line แบบ multi split เริ่มหัวข้อโดย: maneemeena ที่ 27 กุมภาพันธ์ 2017, 09:42:38 ใช้ preg_match แบบด้านบนโค้ดจะสั้นกว่าครับ เพราะถ้าใช้ explode คุณต้องมาเช็คอีกว่า index ที่ 1 และ 2 ของค่าที่แตกออกมาเป็นอะไร และต้องมา explode('=',$data) อีก ยาวหลายบรรทัดเลย
หัวข้อ: Re: สอบถามการ php textarea split line แบบ multi split เริ่มหัวข้อโดย: Mrpoohling ที่ 27 กุมภาพันธ์ 2017, 10:48:59 ใช้ preg_match แบบด้านบนโค้ดจะสั้นกว่าครับ เพราะถ้าใช้ explode คุณต้องมาเช็คอีกว่า index ที่ 1 และ 2 ของค่าที่แตกออกมาเป็นอะไร และต้องมา explode('=',$data) อีก ยาวหลายบรรทัดเลย เจอปัญหาใหม่ครับเมื่อลองเพิ่ม ##name=Item's id 3.0 size 2*100 ,NEW แล้วดึงไม่ได้ครับ ผมลองมาเทส $T="Item's id 3.0 size 2*100 ,NEW"; preg_match("/([a-zA-Z0-9\-\.]+)/",$T, $output); echo $output[0]."<br>"; ออกแค่ Item -*- หัวข้อ: Re: สอบถามการ php textarea split line แบบ multi split เริ่มหัวข้อโดย: pinkam0327 ที่ 27 กุมภาพันธ์ 2017, 11:20:46 ใช้ preg_match แบบด้านบนโค้ดจะสั้นกว่าครับ เพราะถ้าใช้ explode คุณต้องมาเช็คอีกว่า index ที่ 1 และ 2 ของค่าที่แตกออกมาเป็นอะไร และต้องมา explode('=',$data) อีก ยาวหลายบรรทัดเลย เจอปัญหาใหม่ครับเมื่อลองเพิ่ม ##name=Item's id 3.0 size 2*100 ,NEW แล้วดึงไม่ได้ครับ ผมลองมาเทส $T="Item's id 3.0 size 2*100 ,NEW"; preg_match("/([a-zA-Z0-9\-\.]+)/",$T, $output); echo $output[0]."<br>"; ออกแค่ Item -*- โค๊ด:
หัวข้อ: Re: สอบถามการ php textarea split line แบบ multi split เริ่มหัวข้อโดย: Mrpoohling ที่ 27 กุมภาพันธ์ 2017, 12:03:07 ใช้ preg_match แบบด้านบนโค้ดจะสั้นกว่าครับ เพราะถ้าใช้ explode คุณต้องมาเช็คอีกว่า index ที่ 1 และ 2 ของค่าที่แตกออกมาเป็นอะไร และต้องมา explode('=',$data) อีก ยาวหลายบรรทัดเลย เจอปัญหาใหม่ครับเมื่อลองเพิ่ม ##name=Item's id 3.0 size 2*100 ,NEW แล้วดึงไม่ได้ครับ ผมลองมาเทส $T="Item's id 3.0 size 2*100 ,NEW"; preg_match("/([a-zA-Z0-9\-\.]+)/",$T, $output); echo $output[0]."<br>"; ออกแค่ Item -*- โค๊ด:
ไม่ผ่านครับ preg_match("/name=(.*)(?<!#)/", "##name=Item's id 3.0 size 2*100 ,NEW##category=10001##price=1000", $output_array); มันดึงมาหมดเลย Item's id 3.0 size 2*100 ,NEW##category=10001##price=1000 ต้องการแค่ Item's id 3.0 size 2*100 ,NEW ครับ หัวข้อ: Re: สอบถามการ php textarea split line แบบ multi split เริ่มหัวข้อโดย: maneemeena ที่ 27 กุมภาพันธ์ 2017, 12:23:32 ผมแนะนำให้ จขกท ศึกษาเรื่อง regex ด้วยครับ
โค๊ด: (?<!) Negative look behind assertion (?<!foo)bar matches bar when not preceded by foo แก้แพทเทิร์นนิดเดียวก็ได้แล้วครับ โค๊ด: array (size=2) หัวข้อ: Re: สอบถามการ php textarea split line แบบ multi split เริ่มหัวข้อโดย: pinkam0327 ที่ 27 กุมภาพันธ์ 2017, 13:31:55 ใช้ preg_match แบบด้านบนโค้ดจะสั้นกว่าครับ เพราะถ้าใช้ explode คุณต้องมาเช็คอีกว่า index ที่ 1 และ 2 ของค่าที่แตกออกมาเป็นอะไร และต้องมา explode('=',$data) อีก ยาวหลายบรรทัดเลย เจอปัญหาใหม่ครับเมื่อลองเพิ่ม ##name=Item's id 3.0 size 2*100 ,NEW แล้วดึงไม่ได้ครับ ผมลองมาเทส $T="Item's id 3.0 size 2*100 ,NEW"; preg_match("/([a-zA-Z0-9\-\.]+)/",$T, $output); echo $output[0]."<br>"; ออกแค่ Item -*- โค๊ด:
ไม่ผ่านครับ preg_match("/name=(.*)(?<!#)/", "##name=Item's id 3.0 size 2*100 ,NEW##category=10001##price=1000", $output_array); มันดึงมาหมดเลย Item's id 3.0 size 2*100 ,NEW##category=10001##price=1000 ต้องการแค่ Item's id 3.0 size 2*100 ,NEW ครับ preg_match("/name=[^#]*/", $input_line, $output_array); หัวข้อ: Re: สอบถามการ php textarea split line แบบ multi split เริ่มหัวข้อโดย: Mrpoohling ที่ 27 กุมภาพันธ์ 2017, 13:45:27 ใช้ preg_match แบบด้านบนโค้ดจะสั้นกว่าครับ เพราะถ้าใช้ explode คุณต้องมาเช็คอีกว่า index ที่ 1 และ 2 ของค่าที่แตกออกมาเป็นอะไร และต้องมา explode('=',$data) อีก ยาวหลายบรรทัดเลย เจอปัญหาใหม่ครับเมื่อลองเพิ่ม ##name=Item's id 3.0 size 2*100 ,NEW แล้วดึงไม่ได้ครับ ผมลองมาเทส $T="Item's id 3.0 size 2*100 ,NEW"; preg_match("/([a-zA-Z0-9\-\.]+)/",$T, $output); echo $output[0]."<br>"; ออกแค่ Item -*- โค๊ด:
ไม่ผ่านครับ preg_match("/name=(.*)(?<!#)/", "##name=Item's id 3.0 size 2*100 ,NEW##category=10001##price=1000", $output_array); มันดึงมาหมดเลย Item's id 3.0 size 2*100 ,NEW##category=10001##price=1000 ต้องการแค่ Item's id 3.0 size 2*100 ,NEW ครับ preg_match("/name=[^#]*/", $input_line, $output_array); ขอบคุณมากครับได้แล้วววว :P :P |