2011-02-11 15 views
1

我一直在構建一個標題文本中的函數讀取,如在<title></title>標記之間的網頁上發現的。我使用下面的正則表達式代碼獲取標題文本形式的html頁面:用php和正則表達式從網頁上刮取的清理文本

if(preg_match('#<title>([^<]+)</title>#simU', $this->html, $m1)) 
     $this->title = trim($m1[1]); 

我使用下面的編碼爲MySQL INSERT語句值:

mysql_real_escape_string(rawurldecode($this->title)) 

讓我留下一個完整的有HTML實體標題(&收縮壓等)和 外國字符,如 Dating S.o.s | Gluten-free, Dairy-free, Sugar-free Recipes And Lifestyle Tips

的目標是解碼,取出,用的標題是他們看起來更接近PE的數據庫儘可能使用英語。

我已經構建了一個函數,使用以下2個正則表達式來分別去除html實體和限制垃圾。雖然不理想(因爲它刪除了html實體而不是保留它們),但它是最接近我清理乾淨的。

$string = preg_replace("/&#?[a-z0-9]+;/i","",$string); 
//remove all non-normal chars 
$string = preg_replace('/[^a-zA-Z0-9-\s\'\!\,\|\(\)\.\*\&\#\/\:]/', '', $string); 

但非英文字符仍然存在。

會有人能夠提供幫助爲:

  1. 最佳的方式來保存這些標題字符串到數據庫嘗試保持英語意圖(標點符號,apostrophies等)
  2. 如何轉換或消除奇怪的字符,如我在上面的示例標題中所示?

非常感謝您的幫助!

+0

請使用下面的鏈接,它會讓你的生活變得更容易http://stackoverflow.com/questions/3577641/best-方法解析-html – RobertPitt 2011-02-11 19:44:05

回答

1

對於第1點,PHP具有html_entity_decode()函數,您可以使用該函數將HTML實體轉換爲「常規」字符。

+0

鑑於我的過程,你會像當前所做的那樣將實體存儲在mysql中,並在向用戶顯示值時使用解碼? – user603424 2011-02-11 19:39:11