2013-09-21 69 views
-1

我很想幫助解決這個小問題。用PHP收集一些部分HTML(preg_match)

我需要PHP來收集HTML。比方說,這是完整的HTML代碼的一部分:

<div class="inner"> 
       <p>Hi there. I am text! I'm playing hide and seek with PHP.</p> 
      </div> 

我的目標是<p></p>之間收集的一切。這是PHP到目前爲止我有:

$file = file_get_contents($link); //Import le HTML 
    preg_match('<div class="inner"> 
         <p>(.*?)</p> 
        </div>si', $file, $k); //Play find & seek 
    $k_out = $k[1]; 
    $name = strtok($k , '#'); //Remove everything behind the hashtags 

    echo $name; 

但是 - 遺憾的是 - PHP error'd我:

*警告:的preg_match():未知的修飾詞 '<' 在/ home/fourwonders/alexstuff/vinedownloader/public_html/v/index.php on line 131 *

你能幫我嗎?至少,感謝您的閱讀!

+2

當您使用[DOMDocument](http://php.net/domdocument)時,不應使用正則表達式解析HTML,例如您可以輕鬆訪問想要的元素 – kero

回答

2

在這種情況下,那是因爲你沒有指定delimiters(你總是需要分隔符,你需要總是逃避分隔符,如果它是在你的表達:

preg_match('#<div class="inner"> 
        <p>(.*?)</p> 
       </div>#si', $file, $k); 
+0

感謝您的幫助! –

2

不要使用正則表達式解析HTML使用DOM Parser代替:

$doc = new DOMDocument(); 
$doc->loadHTML($html); 
$tags = $doc->getElementsByTagName('p'); 
foreach ($tags as $tag) { 
    echo $tag->nodeValue; 
} 

輸出:

Hi there. I am text! I'm playing hide and seek with PHP. 

Demo!