ホームページ  >  記事  >  バックエンド開発  >  このPHP正規表現が機能しないのはなぜですか?オンラインで待っています~

このPHP正規表現が機能しないのはなぜですか?オンラインで待っています~

WBOY
WBOYオリジナル
2016-06-23 14:21:38991ブラウズ

本帖最后由 chuantian15 于 2013-09-12 20:48:41 编辑

<?phprequire_once 'simple_html_dom.php';$url = $_GET['url'];$html = file_get_html($url);$m = array(preg_match('/charset=\"(.*)\">(\/d+)<\/a><\/li>\n\t\t\t<\/ul>\n<\/div>\n"}/',$html,$m));print_r($m[0]);?>


charset=\"000000\">102<\/a><\/li>\n\t\t\t<\/ul>\n<\/div>\n"}

这是网页直接输出的内容,我需要中间那个102,因为这里是最大的页码,前面有很多个charset=\"000000\">,所以只能通过尾部5ce23afc5b373d775f30254cdc50b95597453a513780e812f6660f820e0d4470\n\t\t\t85392d859695dd7796fb1f5618afcdb0\ne1583fa5fc6dfa0ac341a261f502b439\n"}判断位置。


在线等~

回复讨论(解决方案)

$m = array(preg_match(...));
print_r($m[0]);
这种用法实在让人理解不了
另外正则引擎也要处理转义,所以要想把 \n 正确传递给正则引擎要经过两次转义要加很多 \  

$str = 'charset=\"000000\">102<\/a><\/li>\n\t\t\t<\/ul>\n<\/div>\n"}';preg_match('/charset=\\\\"(.*)\\\\">(\d+)<\\\\\\/a><\\\\\\/li>\\\\n\\\\t\\\\t\\\\t<\\\\\\/ul>\\\\n<\\\\\\/div>\\\\n"}/',$str,$m);print_r($m);

谢谢hengyu654,不过最终返回的结果,是整个网站的源码,不过看起来有希望可以得到102了。

网页输出的直接内容,就是这么一段,有没有比正则更好的获取方式呢?

charset=\"000000\">102<\/a><\/li>\n\t\t\t<\/ul>\n<\/div>\n"}


比如先查找5ce23afc5b373d775f30254cdc50b95597453a513780e812f6660f820e0d4470\n\t\t\t85392d859695dd7796fb1f5618afcdb0\ne1583fa5fc6dfa0ac341a261f502b439\n"},然后把前面的数字提取,直到发现charset=\"000000\">就停下来

谢谢你的代码, 全部搞定了!!!!!!!

hengyu654学霸、土豪、大哥!来亲一个~~~么么哒~~

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。