需要正则表达式来获取线程中的页数:
示例网址:traidnt.net/vb/f25
我试过这个:
'~<td class="vbmenu_control" style="font-weight:normal">.*([2-9]{1}|[0-9]{2,}).*</td>~isU'
但它无法正常工作。
感谢你
答案 0 :(得分:2)
/.*?([0-9]{2,}|[2-9]{1}).*/s
匹配一位数字&gt; 1或任何多位数字。
请注意,这在以下情况下无法正确匹配:“第1页,共1页”
如果字符串已修复,最好使用:
/page \d+ of (\d+) pages/is
或者如果字符串没有绝对修复,但您想要使用字符串中的第二个数字:
/\D*(\d+)\D*(\d+)\D*/s
并使用第二个子匹配。 (当“第1页的第1页”时也会正确匹配。
答案 1 :(得分:1)
您可以使用\d+
来匹配数字,使用否定断言(?!...)
来排除某些内容。通常你需要一些锚点来使它可靠地工作,这里是单词边界:
/\b(?!1\b)\d+\b/
答案 2 :(得分:0)
这将找到所有数字,而不是一个数字:
/[^\D1]/
答案 3 :(得分:0)
<?php
$str="page 1 of 200 pages";
$matches = array();
if (preg_match('/page (\d+) of (\d+)/', $str, $matches)) {
echo $matches[2];
}
?>
更新的问题:
$url="traidnt.net/vb/f25";
$matches1 = array();
if (preg_match('/f(\d+)/', $url, $matches1)) {
echo $matches1[1];
}
?>