PHP - הסרת תגית style
-
אני רוצה להמיר HTML לטקסט.
כמובן שיש פונקציה פשוטה()strip_tags
, אך כידוע, זה לא מסיר את הstyle כי זה בין התגיות.כתבתי משהו כזה:
function html2txt($text) { $text = strip_tags($text, "<style>"); $substring = substr($text,strpos($text,"<style"),strpos($text,"</style>")+2); $text = str_replace($substring,"",$text); $text = str_replace("’","'", $text); $content = preg_replace("/&#?[a-z0-9]{2,8};/i","",$text ); return $content; }
רק שהבעיה שזה מסיר רק את המופע הראשון של הstyle, אם יש כמה מופעים.
מהי הדרך הפשוטה לכתוב את זה?
-
מצאתי פה משהו:
https://stackoverflow.com/questions/20082476/remove-everything-within-script-and-style-tagsמה עדיף DOM או regex?
השני נראה יותר קל, השאלה אם אין לו חריגות. -
@dovid למעשה השתמשתי ברגולורי, בינתיים זה עובד טוב, פרויקט קטנטן וחובבני...
function html2txt($text) { $text = preg_replace('/(<(script|style)\b[^>]*>).*?(<\/\2>)/is', "", $text); $text = strip_tags($text, "<style>"); $text = str_replace("’","'", $text); $content = preg_replace("/&#?[a-z0-9]{2,8};/i","",$text ); $content = join("\n", array_map("ltrim", explode("\n", $content))); $content = preg_replace('/[\r\n]{4,9999}/', "\n", $content); return $content; }