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?
השני נראה יותר קל, השאלה אם אין לו חריגות. -
עדיף 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; }
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות