รบกวนถามเรื่องรูปแบบของ regex หน่อยครับ

เริ่มโดย kisschy, 11 มกราคม 2012, 20:13:57

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

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

kisschy

คือผมมีแท็ก img อยู่แบบนี้ [img width=500 height=300 alt="img_03400099]
แล้วผมเขียน regex แบบนี้ /\[img width=\d{3} height=\d{3} alt=img_\d{8}\].*?\[\/img\]/i
เพื่อที่จะใช้ preg_match_all ดึงเอาลิงค์ของรูปออกมา

ประมาณนี้ครับ

function retrievpic($messages){
   if (preg_match_all('/\[img\].*?\[\/img\]/i',$messages,$page)){
   foreach($page as $value)

   $pic = substr($value[0],5);
   $pic = substr($pic,0,-6);
   return($pic);}

   if (preg_match_all('/\[img width=\d{3} height=\d{3} alt=img_\d{8}\].*?\[\/img\]/i',$messages,$page)){
   foreach($page as $value)
   
        $pic = substr($value[0],43);
   $pic = substr($src,0,-6);
   return($pic);}
}

ผลคือ ถ้าเป็น [img] ธรรมดา ไม่มี width, height หรือ alt มันจะดึงรูปออกมาได้ครับ แต่ถ้ามี alt อยู่ในแท็ก มันจะดึงออกมาไม่ได้
ผมว่าผมเขียน regex ผิดตรง alt= นี่แหละครับ รบกวนผู้รู้ช่วยแก้ไขให้หน่อยนะครับ  :wanwan017: :wanwan017: :wanwan017: :wanwan017:

marus

เป็น bbcode ใช่ไหมครับ

[img]ตำแหน่งรูป[/img]



\[img[^\]].*?\](.*)\[/img\]


น่าจะได้ลองดู

kisschy

คือพอดี ในแท็กรูปมันมีแอตตริบิวต์แบบนี้อ่ะครับ

[img width=xxx height=xxx alt=img_xxxxxxxx]

ตรง xxx คือตัวเลขอ่ะครับ ลองยังไงก็ไม่ได้ -*-

marus

อ้างถึงจาก: kisschy ใน 12 มกราคม 2012, 01:15:30
คือพอดี ในแท็กรูปมันมีแอตตริบิวต์แบบนี้อ่ะครับ

img_xxxxxxxx height=xxx width=xxx แบบนี้หรือเปล่า


<?php
    $images     
'[img width=xxx height=xxx alt=img_xxxxxxxx]ตำแหน่งรูป[/img]';
    
$pattern    '#\[img[^\]].*?\](.*)\[/img\]#i';
    
preg_match_all($pattern,$images,$match);
    
print_r($match);
?>


XXL

$pattern = '/\[img.*?\](.*)\[\/img\]/';
รถไฟวิ่ง ฉึกฉัก..[direct=1].[/direct][direct=2].[/direct][direct=3].[/direct][direct=4].[/direct][direct=5].[/direct]...ถึงก็ช่าง..ไม่ถึงก็ช่าง..

kisschy

ขอบคุณคุณ marus กับคุณ XXL มากนะครับ ขอตัวไปลองดูก่อน ^^