PHP:请帮助使用preg_match

时间:2011-11-04 02:25:51

标签: php preg-match

例如:Found: 84 Displaying: 1 - 84

我希望84Found之间的数字Displayingpreg_match取出,但我在正则表达方面非常糟糕。

你知道学习正则表达的好教程吗?我在Google上找不到一个好的。

编辑 从以下评论中插入

我只是在这里简化我的问题。我会在一个完整的HTML页面中找到它的真正问题,例如谷歌搜索。你知道我的意思吗?

2 个答案:

答案 0 :(得分:3)

如果您的输入始终采用相同的格式,则无需使用正则表达式。相反,只需将字符串拆分为空格:

// explode() on spaces, returning at most 2 array elements.
$parts = explode(" ", "Found: 84 Displaying: 1 - 84", 2);
echo $parts[1];

更新如果你真的真的想使用preg_match(),请按照以下方法进行操作。不建议将此用于此应用程序。

// Array will hold matched results
$matches = array();

$input = "Found: 84 Displaying: 1 - 84";

// Your regex will match the pattern ([0-9]+) (one or more digits, between Found and Displaying
$result = preg_match("/^Found: ([0-9]+) Displaying/", $input, $matches);

// See what's inside your $matches array
print_r($matches);

// The number you want should be in $matches[1], the first subgroup captured
echo $matches[1];

答案 1 :(得分:1)

相当简单的正则表达式,我包含了使用它的PHP代码:

<?php
preg_match("/(\d+)/", "Found: 84 Displaying: 1 - 84", $matches);
//$matches[0] should have the first number, i.e. 84
echo $matches[0]; // outputs "84"
?>

http://www.regular-expressions.info/有一些关于如何编写正则表达式的非常好的信息。

编辑:如上所述,正则表达式在这种情况下是过度的,令牌化工作正常。