一千萬個為什麽

搜索

有沒有辦法優化在頁面上查找文本項(不是正則表達式)


在看到幾個線程在查找HTML文檔中匹配的術語的regexp方法之後,我使用了Simple HTML DOM PHP解析器( http://simplehtmldom.sourceforge.net/ )獲取我所追求的文本,但我想知道我的代碼是否是最佳的。感覺就像我循環太多次了。有沒有辦法優化以下循環?

//Get the HTML and look at the text nodes
   $html = str_get_html($buffer);
   //First we match the <body> tag as we don't want to change the <head> items
   foreach($html->find('body') as $body) {
    //Then we get the text nodes, rather than any HTML
    foreach($body->find('text') as $text) {
     //Then we match each term
     foreach ($terms as $term) {
      //Match to the terms within the text nodes
      $text->outertext = str_replace($term, ''.$term.'', $text->outertext);
     }       
    }
   }

例如,在開始循環之前確定是否有任何匹配是否會有所不同?

最佳答案

說出無知, find 是否采用任意XPath表達式?如果是,您可以將兩個外環折疊成一個:

foreach($html->find('body/text') as $body) {
    ...
}

轉載註明原文: 有沒有辦法優化在頁面上查找文本項(不是正則表達式)

猜你喜歡