请考虑以下网页代码:
<?php
$output = file_get_contents($url);
$start = strpos($output, "<table");
$end = strpos($output, "</table>");
$table = substr($output, $start, ($end - $start));
echo($table);
?>
!!!!!!!!
我原本希望页面按此顺序加载,但它似乎加载为:
!!!!!!!
Table from URL
现在我明白从另一个URL中提取内容需要的时间比简单地渲染一些'!!!!'要长,但是当PHP运行服务器端并且我相信同步运行时我无法解释为什么会发生这种情况。如果有人可以解释这种情况,并建议解决这个问题,我会很感激。
修改 我现在通过做一些Jquery来重新调整文档准备好的div的顺序。感觉非常hacky,我不喜欢它,但现在它必须这样做。如果有人能找到更好的解决方案,请告诉我。
答案 0 :(得分:4)
这是因为HTML的the result of the scraped output不包含结束</table>
标记。
我找不到任何描述以下行为的规范,但我怀疑浏览器无法确定====
是属于table
还是属于body
等等已将其添加到body
的内部HTML。
要解决此问题,请包括该结束表标记的长度(8个字符)
$table = substr($output, $start, ($end - $start + strlen('</table>')));