1

我正在尝试制作一个脚本来帮助我从网站上获取新书。

我正在使用 preg_match_all。我有 7 个信息要获取:标题、作者、编辑...

我在创建我的 preg match 掩码时遇到了一些问题。例如,我需要这里的产品代码。每个页面上有 3 到 10 个代码产品。:

<li><label>Réf : </label>21608</li>

起初我正在尝试这个:

$mask ="/Réf :(.*)<\/li>/Us";

这是工作,但我只想要数字。我在网上搜索正则表达式指南,但我不明白如何使用语法来实现我的目标,因为这个代码产品没有介于两个标签之间:<open>...</open>。此代码产品有 4 或 5 个数字。

谢谢你的帮助 !

4

3 回答 3

1

尝试以下正则表达式:

/Réf :\D*(\d+)<\/li>/
  • \D: 非数字
  • \d: 数字
于 2013-07-03T10:23:30.560 回答
0

试试这个...

/>\s*(\d{3,10})\s*</
于 2013-07-03T10:26:25.717 回答
0

让我们一步一步地尝试匹配这些数字:

  1. 我们有Réf, 让我们制作它/réf/i并使用i修饰符来匹配不区分大小写。
  2. space : space,让我们让它动态并匹配它\s*,它将匹配零次或多次空格/réf\s*:\s*/i
  3. 然后我们根本没有数字,我们可以使用\D*which 将匹配除数字之外的所有内容:/réf\s*:\s*\D*/i
  4. 我们知道有 4 到 5 位数字,我们将使用\d{4,5}它将匹配一个数字 4 或 5 次:/réf\s*:\s*\D*\d{4,5}/i
  5. 我们只需要数字,所以让我们将它们放入一个组中:/réf\s*:\s*\D*(\d{4,5})/i

PHP 代码

$string = '<li><label>Réf : </label>21608</li>';
preg_match_all('/réf\s*:\s*\D*(\d{4,5})/i', $string, $m);
print_r($m[1]);

输出

Array
(
    [0] => 21608
)
于 2013-07-03T10:28:50.983 回答