PHP正则表达式,仅返回部分结果
我有以下PHP正则表达式:PHP正则表达式,仅返回部分结果,php,regex,Php,Regex,我有以下PHP正则表达式: @<tr[\s\S]*?<a class="b1"[\s\S]*?<em[^>]*>([^<]*)[\s\S]*?stars_small_([0-9].[0-9])@ [1] => Array ( [0] => AC/DC Live: Rock Band Track Pack [1] => Ace Combat 6: Fires of Liberat
@<tr[\s\S]*?<a class="b1"[\s\S]*?<em[^>]*>([^<]*)[\s\S]*?stars_small_([0-9].[0-9])@
[1] => Array
(
[0] => AC/DC Live: Rock Band Track Pack
[1] => Ace Combat 6: Fires of Liberation
[2] => All-Pro Football 2K8
[3] => Alone in the Dark
[4] => Armored Core 4
[5] => Army of Two
[6] => Army of Two: The 40th Day
)
[2] => Array
(
[0] => 3.5
[1] => 2.5
[2] => 3.5
[3] => 3.5
[4] => 2.5
[5] => 3.5
[6] => 3.5
)
这就是我要找的,但是我似乎没有得到所有的数据。我应该得到以下标题和分数。但出于某种原因,我只得到了其中的一些
AC/DC Live: Rock Band Track Pack
Ace Combat 6: Fires of Liberation
Afro Samurai
Alan Wake
Aliens vs. Predator
All-Pro Football 2K8
Alone in the Dark
Amped 3
Armored Core 4
Army of Two
Army of Two: The 40th Day
Assassin's Creed
Assassin's Creed II
Assassin's Creed: Brotherhood
Avatar: The Game
我在这里测试了我的正则表达式:
使用此HTML:
@<tr[\s\S]*?<a class="b1"[\s\S]*?<em[^>]*>([^<]*)[\s\S]*?stars_small_([0-9].[0-9])@
[1] => Array
(
[0] => AC/DC Live: Rock Band Track Pack
[1] => Ace Combat 6: Fires of Liberation
[2] => All-Pro Football 2K8
[3] => Alone in the Dark
[4] => Armored Core 4
[5] => Army of Two
[6] => Army of Two: The 40th Day
)
[2] => Array
(
[0] => 3.5
[1] => 2.5
[2] => 3.5
[3] => 3.5
[4] => 2.5
[5] => 3.5
[6] => 3.5
)
如果有人能帮我解释为什么我只能得到一些结果,我将不胜感激。谢谢将子模式
stars\u small([0-9].[0-9])
更改为stars\u small([0-9](?:\.[0-9])?)
,因为一些URL在IMG
标记的SRC
属性中只有一个数字。您应该使用html解析器来解析html。是的,我想可能有更简单的方法来实现这一点。但我想花点时间学习正则表达式。您会推荐哪种解析器?如果安装了DOMDocument,您可以使用它,它是php本身的一部分。好的,谢谢。我以后会调查的。啊。。这是有道理的。谢谢你的帮助。@japanFour。?:
只会使括号内的组无法捕获。\转义
,因此被解释为文本
,而不是通配符元字符。括号内的组后面的?
使其成为可选的,即可能有一个
和另一个数字。好的。谢谢你的解释。