我要抓住從下面的文本頁面數:我有一個正則表達式沒有經驗幫助與正則表達式
<font size="1" color="blue" face="Verdana, Arial">Page 1 of 5/22 Records
。由於我主要用C編程,我試過這個:
sscanf($result, "Page 1 of %d", $Npages);
但它不起作用。
我要抓住從下面的文本頁面數:我有一個正則表達式沒有經驗幫助與正則表達式
<font size="1" color="blue" face="Verdana, Arial">Page 1 of 5/22 Records
。由於我主要用C編程,我試過這個:
sscanf($result, "Page 1 of %d", $Npages);
但它不起作用。
嘗試:
<?php
$str = '<font size="1" color="blue" face="Verdana, Arial">Page 1 of 5/22 Records';
if (preg_match('!Page.*?(\d+)\s+/.+Records!', $str, $matches)) {
$pages = $matches[1];
echo $pages;
}
你幾乎沒有。 PHP的sscanf
可以返回輸出結果,或者使用reference填充解析的值。在你的代碼中,它看起來像你試圖使用一個引用,但你沒有這樣指定它。 PHP中的基準由&
指定的變量名之前,所以你也可以使用:
sscanf($result, "Page 1 of %d", &$npages);
或者,sscanf
將返回所有解析值的數組,如果你不按引用傳遞的任何變量:
$result = "Page 1 of 5/22 Records";
var_dump(sscanf($result, "Page %d of %d/%d Records"));
/*
array(3) {
[0]=>
int(1)
[1]=>
int(5)
[2]=>
int(22)
}
*/
然後,您可以使用list
指定數組變量:
list($page, $npages, $nrecords) = sscanf($result, "Page %d of %d/%d Records");
謝謝。如果我只是使用該字符串,那就行了。 sscanf支持的文本數量是否有限制?因爲我通過cURL檢索頁面,所以我的變量有更多的文本。 – Cornwell 2011-04-13 16:02:29
@Cornwell根據我所知(或在手冊頁中提到) – 2011-04-13 16:07:54
這裏:
#<font[^>]*>(.*)\/(.*) Records<\/font>#is
第二個數組元素將有#。
Barry
$ str = YOUT STRING; preg_match('/ Page \ d + \ d + /(\ d +)Records /',$ str,$ matches);
print_r($ matches);
(\ d +)令牌將組de數頁並將它們插入到$ matches數組中。 – fdaines 2011-04-13 16:00:46
「但它不起作用」是你在生活中做出的最無用的陳述,永遠保證。 「不起作用」是什麼意思?你看到了什麼_精確的,它與你渴望的行爲有什麼不同? – 2011-04-13 15:52:22