ลอง
<?
$strString = '<td class="abc"><div="..">...</div></td>';
if(!preg_match('/^<td class="abc">(.*?)<\/td>$/',$strString)) {
echo "OMG";
}
?>
งงกับคำถามแต่คิดว่าน่าจะใช่คำตอบ
เข้าใจตรง ^ กับ $ ใช่ไหมครับ
ถูกต้องแล้วครับ ประมาณนั้น แต่ผมลองแล้วคือมันไม่ได้ผลครับ ยังไม่เข้าใจ (.*?) จริงๆแล้วมันหมายถึงยังไงแน่ครับ หมายถึงกลุ่มคำใดๆในวงเล็บเหรอครับ ที่ผมเห็นยังมี (.+?) อีก (ส่วน ^,$ ที่เป็นขึ้นต้นหรือลงท้ายพอจะเข้าใจครับ)
หลักๆที่ผมต้องการคือว่า ผมดึงข้อมูลจากเว็บเพจๆหนึ่ง ซึ่งจะมี tag html ในส่วนของ table เช่น ผมต้องการตรวจสอบ ข้อมูลตาม tag ที่ดึงมานี่คือ
<td class="mystyle">
<div id="wow">Hello This is my site <b>Good site</b> <a href="
http://www.goodsitetest.com 
" target="_blank">Click Now</a>
<br><br>New Line
<div id="style2">Ha Ha Ha</div>
</div>
</td>
ต้องการตรวจสอบว่า ถ้าขึ้นต้นด้วย <td class="mystyle">.. ข้อมูลใดๆก็ได้ที่อยู่ระหว่าง tag นี้ซึ่งอาจเป็น code html ตามตัวอย่างขั้นต้น ที่อาจจะมีการอัพเดทเปลี่ยนแปลงได้ ไม่ตายตัว และอาจจมีสัญลักษณ์ ",' หรือ tag ต่างๆที่อาจทำให้ regular expression ไม่ทำงาน</td>
กึ่งกลางของ <td class="mystyle"> และ </td> ผมต้องการตรวจสอบครับ ว่าเป็นลักษณะนี้ใหม ถ้าเป็นลักษณะนี้ ผมอาจจะ replace ให้เป็นไสตล์ของผม หรืออาจจะให้ค่าเป็น FALSE
การเขียนโค๊ดหลักจากนั้นพอจะเข้าใจครับ
แต่ *** ปัญหามันอยู่ที่ ระหว่างกึ่งกลาง <td class="mystyle"></td> นี่สิครับ มันจะมีการเปลี่ยนแปลงบ่อยๆ ผมจะเขียน regular expression ยังไงดี เพราะรู้สึกว่าถ้ามันมีเครื่องหมายบางอย่าง จะทำให้การทำงานของ regular expression มันไม่ถูกต้องในการตรวจสอบครับ
แต่ถ้าเบื้องต้นง่ายๆบางอักขระเช่น
$strString = "
http://www.abc.com 
" ;
if(preg_match('/^<a href="abc">(.*?)<\/a>$/',$strString)) {
echo "URL";
}
แบบนี้หนะได้ครับ
แต่.. ถ้ามันมีโค๊ด html หรืออักขระที่ซับซ็อนกว่านี้มันจะ มีปัญหา
ไม่รู้ว่าจะเขียนยังไงดี ครับ ขอบคุณครับ