簡體   English   中英

preg_match搜索字符串存在問題

[英]Issue with preg_match Search String

我有以下代碼:

$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為null。 在Level之后,應該有一些數字,例如在“ 15 22”之前有一個空格。 我需要腳本僅返回那些數字。 只能使用“關卡”作為搜索,因為它將獲得1個以上的結果。

您沒有正確使用\\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"
}

這將為您提取您的號碼。 $在行的開頭搜索您的匹配項,這對於較長的HTML頁面而言效果不佳。 您還需要在d +上添加一個\\ ,以告訴您要搜索的數字。 然后將\\d+包裹在( )以將匹配項與其余部分分開。

preg_match('/class="db-left">Level (\d+)/', $page, $level_match);

var_dump($level_match[1])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM