求關於RegexPHP過濾編輯器的新聞內容

來源:互聯網
上載者:User
從網站A資料庫中讀取的新聞內容(HTML源碼格式)寫入網站B的新聞表中,格式不統一,而且有很多冗餘代碼,很多是從office複製過去的,需要過濾掉網站A新聞內容中冗餘的HTML代碼。新聞內容在php的$NEWS欄位中,給這個欄位用Regex處理一下。
比如

一級標題粗體1

新聞內容

一級標題粗體2



這段文字為置中


這段文字為靠右對齊


這段文字是斜體


加一個連結


要處理成

一級標題粗體

新聞內容

第二段新聞本文

一級標題粗體2

這段文字為置中

這段文字為靠右對齊

這段文字為斜體

加一個連結



具體的代碼說明寫了個網頁,方便大神看: http://www.sunmuu.com/help/editorHelp.html

後面是php串連查詢的代碼,方便測試,資料庫mysql,表是editor,兩個欄位ID(INIT)和news(MEDIUMTEXT):
$mysql_db_hostname = "localhost";$mysql_db_user = "root";$mysql_db_password = "root";$mysql_db_database = "test";$con = mysqli_connect($mysql_db_hostname, $mysql_db_user, $mysql_db_password, $mysql_db_database);mysqli_query($con, "SET NAMES utf8");$sql="SELECT * FROM editor";$re=mysqli_query($con,$sql)or die("讀取資料出錯". mysqli_error());while($row=mysqli_fetch_array($re)){$str=$row["news"];echo $str;}


回複討論(解決方案)

//去掉不允許的 tag$s = strip_tags($s,'

,,,,');//去掉tag 裡面的屬性$s = preg_replace('/<(p|strong|em)[^>]+?>/i','<$1>',$s);//img 和 a 單獨處理$s = preg_replace('/<(a|img).+?(href|src)="([^"]+?)"[^>]*?>/i','<$1 $2="$3">',$s);echo $s;


試試吧,其它不影響顯示的你就自己去改吧

//去掉不允許的 tag$s = strip_tags($s,'

,,,,');//去掉tag 裡面的屬性$s = preg_replace('/<(p|strong|em)[^>]+?>/i','<$1>',$s);//img 和 a 單獨處理$s = preg_replace('/<(a|img).+?(href|src)="([^"]+?)"[^>]*?>/i','<$1 $2="$3">',$s);echo $s;


試試吧,其它不影響顯示的你就自己去改吧


太感謝你了jam00!!
有一點,p標籤裡面的style align屬性需要保留,style="text-align: center;"和style="text-align: left;",這個邏輯順序是怎樣的?可以給個提示嗎?

//去掉不允許的 tag$s = strip_tags($s,'

,,,,');//去掉tag 裡面的屬性$s = preg_replace('/<(strong|em)[^>]+?>/i','<$1>',$s);//img 和 a 單獨處理$s = preg_replace('/<(a|img).+?(href|src)="([^"]+?)"[^>]*?>/i','<$1 $2="$3">',$s);//單獨處理 p$s = preg_replace('//i','

',$s);echo $s;

//去掉不允許的 tag$s = strip_tags($s,'

,,,,');//去掉tag 裡面的屬性$s = preg_replace('/<(strong|em)[^>]+?>/i','<$1>',$s);//img 和 a 單獨處理$s = preg_replace('/<(a|img).+?(href|src)="([^"]+?)"[^>]*?>/i','<$1 $2="$3">',$s);//單獨處理 p$s = preg_replace('//i','

',$s);echo $s;


很給力,謝謝!
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.