【发布时间】:2012-09-29 13:47:26
【问题描述】:
请帮助我更有效地剥离以下内容。
a href="/mv/test-1-2-3-4.vFIsdfuIHq4gpAnc.html"
我访问的网站有一些,我只需要这两个时期之间的所有内容:
vFIsdfuIHq4gpAnc
我想使用适用于正则表达式环境的当前格式和编码。请帮我调整我的以下预赛线:
preg_match_all("(./(.*?).html)", $sp, $content);
非常感谢我在这方面获得的任何帮助,并在此先感谢您!
这是我的完整代码
$dp = "http://www.cnn.com";
$sp = @file_get_contents($dp);
if ($sp === FALSE) {
echo("<P>Error: unable to read the URL $dp. Process aborted.</P>");
exit();
}
preg_match_all("(./(.*?).html)", $sp, $content);
foreach($content[1] as $surl) {
$nctid = str_replace("mv/","",$surl);
$nctid = str_replace("/","",$nctid);
echo $nctid,'<br /><br /><br />';
以上是我一直在做的事情
【问题讨论】:
-
您似乎正在尝试将正则表达式应用于 HTML,这通常不会很好地结束。改为解析 HTML 文件(有几个扩展名,例如
DOMDocument等)。 -
@KingCrunch 好吧,如果使用 DomDocument 来获取 元素,并使用正则表达式来获取“两个时期之间的所有内容”,我想说正则表达式实际上是一个非常可接受的解决方案。 DomDocument 不会帮助您获得“两个时期之间的所有内容”。
-
@BerryLangerak 是的,那很好,但在示例中是
a href=,这让我假设 OP 目前不这么认为。 -
我以前尝试过 DOM,但在这种情况下它不能满足我的需求。我宁愿坚持使用正则表达式,感谢您的建议。
标签: php html regex preg-match-all