php - 解析部分 html 字符串并隔离特定数字

标签 php scanf text-parsing

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

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

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

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

但是这不起作用。

最佳答案

你就快到了。 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");

关于php - 解析部分 html 字符串并隔离特定数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5651954/

相关文章:

php - Laravel 5 从 URL 获取 ID

PHP : Is there a way, 把这个 if/elseif/else 语句写得更短?

C:将文本文件中的值保存到内存字段

compiler-errors - 在执行代码块时跳过字符输入 i.n scanf()

c - 读取 csv 文件时函数崩溃

php - 显示 channel 中的视频列表 - Vimeo 高级 API

php - 使用 jquery、php、mysql 动态弹出

c - scanf ("%c") 在 scanf ("%d"之后跳过,所以我的讲师告诉我将 scanf ("%d") 更改为 scanf ("%s"),但现在代码不再正常运行

ruby - 高性能 ETL 平面文件提取的更好解决方案?

java - 在java中解析csv文件时出现在单独行中的单词