我如何匹配(PCRE)两个标签之间的所有内容?用正则表达式匹配两个标签之间的所有内容?
我想是这样的:(。*)!
< - - \ S * LoginStart \ S * > < - \ S * LoginEnd \ S * - >
但它对我来说并没有太好的效果..
我对正规快车很陌生离子,所以我希望如果有人愿意向我解释我会如何实现这一点,如果它甚至可能与正则表达式。
谢谢
我如何匹配(PCRE)两个标签之间的所有内容?用正则表达式匹配两个标签之间的所有内容?
我想是这样的:(。*)!
< - - \ S * LoginStart \ S * > < - \ S * LoginEnd \ S * - >
但它对我来说并没有太好的效果..
我对正规快车很陌生离子,所以我希望如果有人愿意向我解释我会如何实现这一点,如果它甚至可能与正则表达式。
谢谢
$string = '<!-- LoginStart --><div id="stuff">text</div><!-- LoginEnds -->';
$regex = '#<!--\s*LoginStart\s*-->(.*?)<!--\s*LoginEnds\s*-->#s';
preg_match($regex, $string, $matches);
print_r($matches); // $matches[1] = <div id="stuff">text</div>
解释:
(.*?) = non greedy match (match the first <!-- LoginEnds --> it finds
s = modifier in $regex (end of the variable) allows multiline matches
such as '<!-- LoginStart -->stuff
more stuff
<!-- LoginEnds -->'
PHP和正则表达式?下面是一些建议:
'/<!--\s*LoginStart\s*-->(.*)<!--\s*LoginEnd\s*-->/Us'
可能会更好 - 在U
资本使得正则非贪婪的,这意味着它会在第一<!--
可能停止工作。但重要的是s
,它告诉正则表达式匹配一个换行符与.
字符。
根据您对大小写的确定程度,在末尾添加i
将使正则表达式搜索不区分大小写。
我已经试过欧文的答案,但它的条件未能像
<!-- LoginStart --><div id="stuff">text</div><!-- LoginEnds -->"DONT MIND THIS"<!-- LoginStart --><div id="stuff">text</div><!-- LoginEnds -->
这包括行 “不介意这” 也是,那就是它涵盖了第一个内部的所有内容 <! - LoginStart - >和最后<! - LoginEnds - >标签
可以降价吗? – 2008-11-13 19:51:39