【发布时间】:2013-06-10 11:54:54
【问题描述】:
我有 curl_exec 返回的这个字段:
<input name="NUMBER_R" type="hidden" value="1500000">
150000是一个随机数,可能会改变,其他都是常数
我试过了:
preg_match ('/<input name="NUMBER_R" type="hidden" value="([^"]*)" \/>/', $result, $number)
还有:
preg_match ('/<input name=\'NUMBER_R\' type=\'hidden\' value=\'(\\d+)\'>/ims', $result, $number)
但没有运气......
这里是完整的代码:
$result=curl_exec($cid);
curl_close($cid);
$number = array();
if (preg_match ('REGEX', $result, $number))
{
echo $number[1];
}
编辑 1: 抱歉,我在 echo $number[1] 中忘记了 [1]; 1500000 也是一个随机数,可能会发生变化
【问题讨论】:
-
在第一次尝试中,您强制使用自关闭标签,而返回的值实际上不是自关闭的。此外,REGEX'ing 元素通常不是一个很好的举措。为什么不将其放入 DOMDocument 并从中读取值?
-
$number是一个数组,你应该使用print_r而不是echo。 -
@Utkanos 谢谢你确实有效,不幸的是我不能使用 DOM 出于某种原因,只是另一个问题,如果我总是得到一个数字,值 =(\\d+)\ 是否可以?如果它总是一个数字,什么更好用?我希望你回答而不是评论,所以我可以接受它
-
我没有回答,因为我没想到自动关闭的东西会成为你的终极问题。是的,
\d非常适合匹配数字 - 这就是它的用途。唯一要记住的是您的+修饰符将要求至少有一个数字。如果有可能根本没有值,但您仍希望模式匹配,请使用*,它强制为 0 或更多。