我有以下代码:
$base_url = "http://www.WWWW.com/npcs/";
$url = $base_url.$npc;
$page = file_get_contents($url);
preg_match('/class="db-left">Leveld+/', $page, $level_match);
这是我需要查找的原始搜索,尝试搜索字段的各种变体,似乎无法找到一个有效的,所有这些都使$ level_match为空。 在Level之后应该有一些数字,比如“15 22”之前的空格。 我需要脚本只返回那些数字。不能仅使用Level作为搜索,因为它将获得超过1的结果。
答案 0 :(得分:0)
您没有正确使用\d
来表示数字。它需要反斜杠。
除非你满足“等级”和数字之间的空白,否则你也不会匹配“等级27”:
preg_match('/class="db-left">Level\s+(\d+)/', $page, $level_match);
这适用于:
$page = '<dd class="db-left">Level 27 (Rare)</dd>';
preg_match('/class="db-left">Level\s+(\d+)/', $page, $level_match);
var_dump($level_match);
我在问题的\d
附近添加了括号,因为您稍微更改了问题,只询问提取的数字:
array(2) {
[0] =>
string(24) "class="db-left">Level 27"
[1] =>
string(2) "27"
}
答案 1 :(得分:0)
这将为您提取您的号码。 $
正在该行的开头搜索您的匹配,这对于长HTML页面来说效果不佳。您还需要在d +中添加\
,告诉您要搜索数字。然后将\d+
包裹在(
)
中以将匹配与其他匹配分开。
preg_match('/class="db-left">Level (\d+)/', $page, $level_match);
var_dump($level_match[1])