帮助正则表达式

时间:2011-04-13 15:43:58

标签: php regex

我需要从以下文字中获取页数:

<font size="1" color="blue" face="Verdana, Arial">Page 1 of 5 / 22 Records

我没有正则表达式的经验。由于我主要使用C编程,所以我尝试了这个:

sscanf($result, "Page 1 of %d", $Npages);

但它不起作用。

4 个答案:

答案 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($匹配);