我有一个像这样的HTML:
......whatever very long html.....
<span class="title">hello world!</span>
......whatever very long html......
这是一个非常长的HTML,我只想要内容'你好世界!'从这个HTML
我得到了这个HTML$result = file_get_contents($url , false, $context);
很多人都在使用Simple HTML DOM解析器,但我想在这种情况下,使用正则表达式会更有效率。
我应该怎么做?有什么建议?任何帮助都会非常棒。提前感谢!
答案 0 :(得分:2)
坚持使用DOM解析器 - 它更好。话虽如此,你可以使用像这样的REGEX ......
// where the html is stored in `$html`
preg_match('/<span class="title">(.+?)<\/span>/', $html, $m);
$whatYouWant = $m[1];
preg_match()
存储在正则表达式中括号内捕获的所有元素的数组,以及第0个元素,它是整个捕获的字符串。在这种情况下,正则表达式非常简单,几乎是你想要的直接字符串匹配,关闭span标记的斜杠转义。捕获的部分仅表示任何字符(.
)一次或多次(+
)非贪婪(?
)。
答案 1 :(得分:0)
不,我真的不认为regEx或类似的功能会更有效或更容易。
如果你使用SimpleHTML DOM,你可以快速获得你想要的数据:
//Get your file
$html = file_get_html('myfile.html');
//Use jQuery style selectors
$spanValue = $html->find('span.title')->plaintext;
echo($spanValue);
使用preg_match你可以这样做:
preg_match("/<span class=\"title\">([^`]*?)<\/span>/", $data, $matches);
或者,如果有多个跨度与“标题”类:
preg_match_all("/<span class=\"title\">([^`]*?)<\/span>/", $data, $matches);