需要一个正则表达式来获取线程中的页数:
示例网址 : traidnt.net/vb/f25
我试过这个:
'~<td class="vbmenu_control" style="font-weight:normal">.*([2-9]{1}|[0-9]{2,}).*</td>~isU'
但它行不通。
谢谢你
/.*?([0-9]{2,}|[2-9]{1}).*/s
匹配一位数> 1 或任何多位数数字。
请注意,在以下情况下,这不会正确匹配:"第 1 页,共 1 页">
如果字符串是固定的,你最好选择:
/page 'd+ of ('d+) pages/is
或者,如果字符串不是绝对固定的,但您想要字符串中的第二个数字,则可以使用:
/'D*('d+)'D*('d+)'D*/s
并使用第二个子匹配项。(当"第 1 页,共 1 页"时也会正确匹配。
您可以使用
'd+
来匹配数字,并使用否定断言(?!...)
排除某些内容。通常你需要一些锚点来使其可靠地工作,这里是单词边界:
/'b(?!1'b)'d+'b/
这将找到所有数字,这些数字不是一个:
/[^'D1]/
<?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];
}
?>