preg_match php问题

时间:2011-08-07 13:45:10

标签: php preg-match

我试图在页面上找到一个链接

链接看起来像这样

https://pos.xxxxxxxxxx.de/xxxxxxxxxxxx/app?funnel=login_box&tid=2001004

我隐藏域名:)

所以有我的代码:

preg_match('~(https://pos.xxxxxxxxxx.de/xxxxxxxxxx/app\?funnel=login_box&tid=\d+)~', $text, $ans);
找不到......

我试试这个

preg_match('~(https://pos.xxxxxxxxxx.de/xxxxxxxxxx/app\?funnel=login_box&tid=)~', $text, $ans);

尝试仅查找链接的固定部分...

stil nothing

所以我试试这个

preg_match('~(https://pos.xxxxxxxxxx.de/xxxxxxxxxx/app\?funnel=login_box)~', $text, $ans);

现在我找到一些链接,但为什么我找不到整个链接???

3 个答案:

答案 0 :(得分:3)

可能在html源代码中,&已扩展为&,请尝试:

&(amp;)?

提醒 - .表示每个字符,所以你应该逃避它,但这里并不重要。

答案 1 :(得分:0)

的preg_match( “/(HTTPS:// [^ =] + = [^ =] + = [\ d] +)/ I”,$文本,$米);

如果你在链接的末尾有'或',就像这样的href =“https:// .....”

你可以使用这个:preg_match(“/ \”(https:// [^ \“] +)\”/ i“,$ text,$ m);

答案 2 :(得分:0)

$html = "http://www.scroogle.org
http://www.scroogle.org/
http://www.scroogle.org/index.html
http://www.scroogle.org/index.html?source=library
You can surf the internet anonymously at https://ssl.scroogle.org/cgi-bin/nbbwssl.cgi.";

preg_match_all('/\b((?P<protocol>https?|ftp):\/\/(?P<domain>[-A-Z0-9.]+)(?P<file>\/[-A-Z0-9+&@#\/%=~_|!:,.;]*)?(?P<parameters>\?[A-Z0-9+&@#\/%=~_|!:,.;]*)?)/i', $html, $urls, PREG_PATTERN_ORDER);
$urls = $urls[1][0];

匹配

<强> http://www.scroogle.org

<强> http://www.scroogle.org/

<强> http://www.scroogle.org/index.html

<强> http://www.scroogle.org/index.html?source=library

您可以通过 https://ssl.scroogle.org/cgi-bin/nbbwssl.cgi 匿名上网。

循环结果,您可以使用:

for ($i = 0; $i < count($urls[0]); $i++) {
    echo $urls[1][$i]."\n";
}

将输出:

http://www.scroogle.org
http://www.scroogle.org/
http://www.scroogle.org/index.html
http://www.scroogle.org/index.html?source=library
https://ssl.scroogle.org/cgi-bin/nbbwssl.cgi

欢呼,Lob