【发布时间】:2011-06-26 14:56:24
【问题描述】:
编辑:我知道这是一个难以复制的问题,但如果有人能就导致此问题的可能原因提出建议,那将非常有帮助。
编辑:根据要求,这里是$content:
http://pastebin.com/raw.php?i=tHecParp
这是一个提取的网页。 create|exited|deleted|updated 是样本,我正在寻找关键字 المحتجين。
以下代码在 while 循环中连续运行:
$pattern = "/(create|exited|deleted|updated)/";
$num_found = preg_match_all( $pattern, $content, $matches );
var_dump( $num_found );
if( $num_found === false )
{
if (preg_last_error() == PREG_NO_ERROR) {
var_dump( 'There is no error.' );
}
else if (preg_last_error() == PREG_INTERNAL_ERROR) {
var_dump( 'There is an internal error!' );
}
else if (preg_last_error() == PREG_BACKTRACK_LIMIT_ERROR) {
var_dump( 'Backtrack limit was exhausted!' );
}
else if (preg_last_error() == PREG_RECURSION_LIMIT_ERROR) {
var_dump( 'Recursion limit was exhausted!' );
}
else if (preg_last_error() == PREG_BAD_UTF8_ERROR) {
var_dump( 'Bad UTF8 error!' );
}
else if (preg_last_error() == PREG_BAD_UTF8_ERROR) {
var_dump( 'Bad UTF8 offset error!' );
}
}
我只是在读入$content的文本文件中寻找一些关键字。
输出
int(1)
int(1)
int(1)
int(1)
int(1)
bool(false)
string(18) "There is no error."
bool(false)
string(18) "There is no error."
bool(false)
string(18) "There is no error."
它找到一个关键字几次,然后开始返回 false。 在测试时,我保持$content 不变。因此它必须继续查找关键字,而不是返回 false。但是preg_last_error() 没有帮助。
谁能解释我为什么会弄错?
【问题讨论】:
-
能不能看到内容,自己测试一下?
-
能否展示整个循环,以便我们查看条件
-
指向 $content 内容的 pastebin 链接似乎不起作用。另外,我们能否得到代码示例中包含的 while 循环和任何变量的声明?
标签: php regex preg-match-all