我遇到了正则表达式模式的问题。结果返回两个数组......这是我的代码:
$code = preg_match_all("/\< style\>(.*?)\<\/style\>/",$code,$matches);
var_dump($matches);
作为测试我设置:
$code = ">< xxxxx> try blah fooo blah < /xxxxx> idfidf oh < x>< /x> < style> blah blah blah style1 < /style>< style>blah blah style 2 x< /style>
它返回2个数组,我的意思是
$matches = array
0 => array
0 => string '< style> blah blah blah style1 < /style>' (length=38)
1 => string '< style>blah blah style 2 x< /style>' (length=34)
1 => array
0 => string ' blah blah blah style1 ' (length=23)
1 => string 'blah blah style 2 x' (length=19)
我想要的匹配是在第二个数组中。我在标签之间放置了空格,因为编辑器没有显示HTML标签。
答案 0 :(得分:1)
你试过这个:
echo $matches[0];
echo $matches[1]; // and so on, depend in the number of matches.
答案 1 :(得分:1)
以下代码对我有用:
$code = "<xxxxx> try blah fooo blah </xxxxx> idfidf oh <x></x> <style> blah blah blah style1 </style><style>blah blah style 2 x</style>";
$code = preg_match_all("~<style>(.*?)</style>~si", $code, $matches);
var_dump($matches[1]);
s
适用于DOT_ALL(包括换行符)i
用于忽略大小写匹配array(2) {
[0]=>
string(23) " blah blah blah style1 "
[1]=>
string(19) "blah blah style 2 x"
}
然而,只是为了让您知道从正则表达式解析HTML不是一个好主意,您最好使用许多可用于PHP的HTML解析器。
答案 2 :(得分:0)
如何使用Xpath? http://nl.php.net/manual/en/class.domxpath.php
适合我(大部分时间,都是;))