2012-03-31 46 views
2

我用下面的代碼從我的字符串中刪除腳本,鏈接標籤,的preg_replace腳本,鏈接標籤不工作

$contents='<script>inside tag</script>hfgkdhgjh<script>inside 2</script>'; 
$ss=preg_replace('#<script(.*?)>(.*?)</script>#is', '', $contents); 
echo htmlspecialchars($ss); 

它工作正常。但是,我可以使用任何類似於html解析而不是preg_match的東西嗎?

+0

你確定你從你的電話回來的東西? – jprofitt 2012-03-31 04:46:18

+0

strip_tags可能會幫助http://www.php.net/manual/en/function.strip-tags.php ...查看頁面底部的用戶貢獻腳本 – gpasci 2012-03-31 04:57:47

+0

@jpofit:是的,它返回網站內容,剝離內容和標籤後。 – joHN 2012-03-31 05:58:48

回答

2

這裏有一些事情可以做

  1. htmlspecialchars()可以證明無用
  2. striptags()這些標籤移除所有的HTML標籤

但是,你正在使用的技術是正確的。然而,這是一個改進版本

echo preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', "", $contents); 
0

HTML Purifier永遠是個不錯的選擇。 phpQuery也派上用場了幾次。

如果您正在清理內容,那麼使用正則表達式犯錯誤是非常容易的...閱讀this post。這取決於你想要達到的目標。