-2

我正在使用 curl 从远程页面检索源代码,然后使用它在我的页面中回显它,echo $html但这会回显整个远程页面。我要做的是防止某些部分

从在我的页面中回显(远程页面中的广告和其他一些部分),远程页面代码几乎就是这样

<IFRAME FRAMEBORDER=0 MARGINWIDTH=0 MARGINHEIGHT=0 SCROLLING=NO WIDTH=728 HEIGHT=90 SRC="http://creative.xtendmedia.com/proxy/matomymediaproxy.html?ad_type=ad&ad_size=728x90&section=2650714"></IFRAME>

<script type="text/javascript" src="http://www.youradexchange.com/script/java.php?option=rotateur&rotateur=83132"></script>

<script language="JavaScript"> var zflag_nid="1723"; var zflag_cid="18"; var zflag_sid="0"; var zflag_width="1"; var zflag_height="1"; var zflag_sz="15"; </script>

<script language="JavaScript" src="http://c1.zxxds.net/jsc/c1/fo.js"></script>

我目前使用preg_match_all('#(<iframe.*myspecificword.*/iframe>)#i', $html, $matches); var_dump($matches);

但它不是有效的,因为特定的词每次都不同。

如果我只想显示的代码部分始终是第 59 行,是否还有其他更好的方法?怎么能只回显这条线?

4

1 回答 1

0

您需要类似于 Python Beautiful Soup的东西,但对于 PHP,就像这样。无论如何,它可能在后台使用正则表达式,因此它可能不会比您的解决方案更快。当然,它更干净。

编辑:我不鼓励这样做,但是如果您知道您的脚本将始终是文件的第 59 行并且只有一行,那么逐行读取它,丢弃前 58 行,如下所示:

$stream = fopen('http://php.net/manual/en/function.fopen.php', 'r');

if (!$stream) {
    // Report error
}

for ($i = 0; $i < 58; $i++) {
    fgets($stream);
}

// Here is line 59
$myline = fgets($stream);

echo $myline;

您可能必须使用以下命令扩展已识别的行终止符列表:

ini_set('auto_detect_line_endings',true);

相反,如果页面是字符串,则使用explode()在行终止符处将其断开,然后选择返回数组的第 59 个元素。

于 2013-05-08T12:25:41.820 回答