0

我有一堆 HTML 页面,每个页面顶部都包含一行,该行是

<?xml version="1.0" encoding="UTF-8" ?>

当我在本地主机上运行时,页面可以完美打开,现在我已经将文件上传到服务器,它给了我一个错误。错误是,

Parse error: syntax error, unexpected T_STRING in /home/a7597163/public_html/secretary.html on line 1

当我删除此行时,页面显示没有任何错误,但问题是我无法手动删除其中的每一行,谁能告诉我如何从每一页中删除该行...我尝试使用这个

document.body.innerHTML = document.body.innerHTML.replace( /<?xml version="1.0" encoding="UTF-8" ?>/g, "");

但没有用。

谢谢

4

4 回答 4

2

如果是 PHP 错误。它在服务器端被抛出,远在客户端看到它并且 JavaScript 有时间对其进行操作之前。所以没有 JavaScript 可以解决这个问题。

所以在这里,解决方案是修改或删除源中的行,因为当短标签打开时,它在 PHP 文件本身中的语法不正确。

如果您的托管服务提供商允许您编辑php.ini,您可以这样做short_open_tag=Off。但这也会导致任何其他<? ... ?>PHP 块停止工作。

于 2012-10-27T10:28:04.490 回答
1

您遇到的问题是您的实时系统上的 PHP 解释器打开了“short_tags”,因此它解释<?为 PHP 标记的开始。

您将无法对页面进行任何操作,因为它们永远不会被加载。您最好的选择是在您的开发机器上编写一个脚本来进行更改,然后他们重新上传更改后的页面。

脚本的外观很大程度上取决于您在本地使用的操作系统。

于 2012-10-27T10:28:56.080 回答
1

首先,您收到错误的原因是您的服务器出于某种原因允许使用短标签。即<?对于您的服务器意味着与<?php. 这充其量是一个值得怀疑的事情,但可能最好禁用它。

现在,有无数程序可以在文件中查找和替换。一个这样的流行程序是sed所以,你可以这样做:

$ find your/project/directory -type f -name "*.html" | sed -i 's/<[?]xml[^>]\+>//'

-i选项sed使其替换文件,因此您可能需要先创建备份。

在 Linux 或 Macintosh 上。

我在 SO如何使用 Windows 命令行环境查找和替换文件中的文本?关于在 Windows 上做同样的事情,但可能你的代码编辑器也可以这样做。

于 2012-10-27T10:59:27.167 回答
0

如果您有权访问 php.ini,则必须执行以下操作:

打开它并设置:

short_open_tag=开启

short_open_tag=关闭

否则,将该行更改为

<?php echo 'xml version="1.0" encoding="UTF-8"'; ?>

编辑:如果您没有该访问权限,则可以尝试这种肮脏的方式:

<<??>?xml version="1.0" encoding="utf-8"?>
于 2012-10-27T10:28:55.753 回答