【发布时间】:2013-07-12 08:39:16
【问题描述】:
这段代码运行了几个星期,现在返回一个错误。关于发生了什么的任何建议?看来我正在解析的网站做了一些小的改动,导致我的解析器卡住了它......
想象文件test.html中的以下字符串(不带点)
... </script> <script type="text/javascript" src=" ...
所需的字符串转换
Replace <script type="text/javascript" with <tagkilled
使用以下php代码
$file = "test.html";
// Destroy javascript codetag
$command='/bin/sed -ri \'s/<script type="text\/javascript"/<tagkilled/g\' '.str_replace(' ','\ ',$file);
exec($command);
返回错误信息
/bin/sed: -e expression #1, char 34: Invalid preceding regular expression
旁注:运行 sed 4.2.1 2010 年 12 月在 Ubuntu 12.10 上。
【问题讨论】:
-
您总是容易受到远程站点 HTML 中的更改的影响。 HTML 不是您可以在 (see here) 上使用正则表达式的东西。有关更强大的解决方案,请阅读 PHP 的 DOMDocument 类。
-
上面的代码为通过 DOM 解析器解析的文档做准备。为了进入页面的脚本部分,我需要删除脚本标签。这正是代码的作用。