Joh*_*ith 1 php regex parsing preg-match
好的,我想说我正在尝试解析这个问题:
href="http://google.com">Website</a>
Run Code Online (Sandbox Code Playgroud)
这不起作用:
preg_match('/href="http:\/\/(.+)">/', $a, $b);
Run Code Online (Sandbox Code Playgroud)
但这样做:
preg_match('/href="http:\/\/(.+)">Website/', $a, $b);
Run Code Online (Sandbox Code Playgroud)
为什么是这样?第一个只是继续到字符串的末尾.
这里的问题是你的选择器是贪婪的 - 它将匹配它可能的最长字符串:
preg_match('/href="http:\/\/(.+)">/', $a, $b);
Run Code Online (Sandbox Code Playgroud)
由于您使用"任何字符"(.),因此它会一直匹配,直到">输入字符串中最后一次出现.
如果你使选择器非贪婪,那么它将在最短的匹配时停止:
preg_match('/href="http:\/\/(.+?)">/', $a, $b);
Run Code Online (Sandbox Code Playgroud)
注意?正则表达式中的额外值,它将"一个或多个"(+)运算符修改为无贪心.
默认情况下,您还可以使用u修饰符使所有选择器非贪婪:
preg_match('/href="http:\/\/(.+)">/u', $a, $b);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |