我有一堆HTML页面,每页都包含一行在页面顶部,行是
<?xml version="1.0" encoding="UTF-8" ?>
当我在localhost上运行时,页面打开得很好,现在我已经将文件上传到服务器了,它给了我一个错误。错误是,
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, "");
但没有奏效。
由于
答案 0 :(得分:2)
如果是PHP错误。它正在被服务器端抛出,远在客户端看到它之前,JavaScript有时间对其进行操作。所以没有JavaScript可以解决这个问题。
所以在这里,解决方案是修改或者强烈地删除源代码,因为当打开短标签时,PHP文件本身在语法上是不正确的。
如果您的托管服务提供商允许您修改 php.ini ,则可以执行short_open_tag=Off
。
但这也会导致任何其他<? ... ?>
PHP块停止工作。
答案 1 :(得分:1)
您遇到的问题是您的实时系统上的PHP解释器已启用“short_tags”,因此它会将<?
解释为PHP标记的开头。
您将无法对页面进行任何操作,因为它们永远不会被加载。最好的办法是在开发机器上编写一个脚本来进行更改,然后重新上传更改后的页面。
脚本的外观很大程度上取决于您在本地使用的操作系统。
答案 2 :(得分:1)
首先,您收到错误的原因是您的服务器由于某种原因允许使用短标签。即服务器的<?
与<?php
相同。这充其量是个问题,但可能最好禁用它。
现在,有数以万计的程序可以在文件中查找和替换。其中一个受欢迎的程序是sed
所以,你可以这样做:
$ find your/project/directory -type f -name "*.html" | sed -i 's/<[?]xml[^>]\+>//'
-i
的 sed
选项使其替换文件,因此您可能需要先创建备份。
在Linux或Macintosh上。
我在SO How can you find and replace text in a file using the Windows command-line environment?上找到了关于在Windows上做同样事情的这个帖子,但是你的代码编辑器也可以这样做。
答案 3 :(得分: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"?>