我需要从以下文字中获取页数:
<font size="1" color="blue" face="Verdana, Arial">Page 1 of 5 / 22 Records
我没有正则表达式的经验。由于我主要使用C编程,所以我尝试了这个:
sscanf($result, "Page 1 of %d", $Npages);
但它不起作用。
答案 0 :(得分:3)
你快到了。 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");
答案 1 :(得分:0)
尝试:
<?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;
}
答案 2 :(得分:0)
这里:
#<font[^>]*>(.*)\/(.*) Records<\/font>#is
第二个数组元素将包含#。
百里
答案 3 :(得分:0)
$ str = YOUT STRING;
preg_match('/ Page \ d + of \ d + /(\ d +)Records /',$ str,$ matches);
的print_r($匹配);