PHP : ใช้ Regular Expression สำหรับกำจัด Style Sheet และ Javascript ที่ไม่ต้องการ

3 Jan

ตอนนี้ต้องการใช้ PHP ประมวลผลเอกสาร Hypertext เพื่อดึงข้อมูลที่เป็นเฉพาะข้อความออกมาใช้งาน ดังนั้นสิ่งที่จำเป็นคือการกำจัด HTML Tag ออกไปให้หมด

สำหรับ PHP เองก็เตรียมฟังก์ชันที่ง่ายที่สุดสำหรับการช่วยกำจัด HTML Tag ให้อยู่แล้ว คือ

strip_tags()

แต่จากการใช้งานงาน ปัญหาของ

strip_tags()

คือมันจะดึงเฉพาะ Tags มาตรฐานที่รู้จักกันดีออกไป แต่ยังคงเหลือพวก Javascript และ Inner Style Sheet เอาไว้

ดังนั้นก่อนที่จะใช้

strip_tags

จึงมีความจำเป็นจะต้อง ใช้ Regular Expression ในการตรวจสอบ และกำจัด Tags ของ Javascript และ Inner Style Sheet ออกไปก่อน

ซึ่งทำได้โดย

<?php
$html = file_get_contents($url);

/* remove <script>**</script> */
$html = preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', "", $html);
$html = preg_replace('/(<(script|style)\b[^>]*>).*?(<\/\2>)/is', "$1$3", $html);
$text = strip_tags($html);

/* remove empty line from text */
$text = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $text);
?>

จากตัวอย่างด้านบน เมื่อใช้ strip_tags() แล้วปัญหาอีกอย่างหนึ่งคือ จะมีบันทัดที่เป็น white space หรือบรรทัดว่างๆ อยู่ภายในไฟล์หนังประมวลผล จึงจำเป็นต้องใช้ Regular Expression ในการตรวจสอบบรรทัดว่าง และกำจัดออกไปอีกครั้ง

เป็นกระบวนการที่ค่อนข้างง่าย แต่ปัญหาที่พบคือเป็นกระบวนการที่สิ้นเปลืองหน่วยความจำมากทีเดียว ในการทำงานจริงๆ ก็เลยหนึไปใช้ Python ในการประมวลครับ

Social Comments

Loading Disqus Comments ...
Loading Facebook Comments ...