使用正则表达式检索()内的数据

时间:2014-10-31 21:42:12

标签: php regex

我想使用正则表达式从网页中检索数值。

(我无法让simple_php_dom处理https请求。)

以下是包含数值( 78

的代码
<p class="b45">
<a href="/?page=browseAllPages&amp;idCategory=1&amp;idUser=12345">
Display all tables (78)
</a></p>

这是我使用的命令

preg_match_all("/Display all tables \((.*)\)/", $file_content, $matches);
var_dump($matches[0][0]);

但它返回

string(137) "

Display all tables (78)
"

编辑:我的错误

var_dump($matches[1][0]);

是正确的,但它返回

string(9) " (78)" 

返回值

echo $matches[1][0];

:)

2 个答案:

答案 0 :(得分:3)

请改为尝试:

preg_match_all('/Display all tables \((\d+)\)/', $file_content, $matches);
$mtch = (int)$matches[1][0];
var_dump($mtch);

答案 1 :(得分:0)

试试这个:

<?php
$string = <<<EOS
<p class="b45">
<a href="/?page=browseAllPages&amp;idCategory=1&amp;idUser=12345">
Display all tables (78)
</a></p>
EOS;

preg_match_all("/Display all tables \((.*)\)/", $string, $matches);

echo $matches[1][0] . " - " . gettype($matches[1][0]) . "\n";
echo (int)$matches[1][0] . " - " . gettype((int)$matches[1][0]) . "\n";

毕竟你得到的子字符串与你的正则表达式相匹配。即使你这样做:

preg_match_all("/Display all tables \((\d+)\)/", $string, $matches);

但是你可以将它转换为整数。