PHP preg_match_all - 如何从HTML获取内容?

时间:2012-05-31 11:26:12

标签: php html regex

$ Content包含HTML文档

   $contents = curl_exec ($ch)  

我需要从以下网址获取内容:

 <span class="Menu1">Artur €2000</span>

它重复了几次,所以我想把它保存到Array

我试着这样做:

 preg_match_all('<span class=\"Menu1\">(.*?)</span>@si',$contents,$wynik2);

但我有错误

Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '('

你能帮帮我吗? 编辑:$ contents = curl_exec($ ch)

已解决:由于CURLed网站上的错误HTML错误导致错误:

  <span class="Menu1">Content</tr>

而不是:

 <span class="Menu1">Content</tr>

我没想到有人会写错HTML。谢谢你们的帮助!

2 个答案:

答案 0 :(得分:6)

您忘记了第一个分隔符(@):

$contents = '<span class="Menu1">Artur $2000</span> somehtml <span class="Menu1">Mark $1000</span>';
preg_match_all('@<span class="Menu1">(.*?)</span>@si', $contents, $wynik2);

print_r($wynik2);
/*
Array
(
    [0] => Array
        (
            [0] => <span class="Menu1">Artur $2000</span>
            [1] => <span class="Menu1">Mark $1000</span>
        )

    [1] => Array
        (
            [0] => Artur $2000
            [1] => Mark $1000
        )

)
*/

答案 1 :(得分:0)

您应该在正则表达式的开头和结尾添加“|”标记:

preg_match_all("|<span class=\"Menu1\">(.*?)</span>|U",$contents,$wynik2);