gpt4 book ai didi

regex - 在 PHP 打开或关闭标记之前检查空行

转载 作者:行者123 更新时间:2023-12-02 04:25:36 25 4
gpt4 key购买 nike

我的 WordPress 网站出现错误(XML 解析错误),因为 <DOCTYPE> 之前有一个空行。 。这可能是由主题或插件文件之一中 PHP 开始标记 <?php 之前的空行引起的。或在结束标记 ?> 之后。我已经检查了一些文件(主题 index.phpheader.phpfunctions.php 和一些插件),但没有找到原因。

是否有一个聪明的技巧来检查所有文件的 php 标签之前或之后是否有空行?也许是一些正则表达式?或者有什么方法可以检查哪个主题文件或插件文件输出此行?

最佳答案

我不这么认为

  • DOS/Windows 行终止 - 回车符 \r 加换行符 \n 对,或
  • UNIX 行终止 - 仅换行 \n

问题出在文件顶部。这些空白字符通常会被忽略。

我假设您已将文件创建为 UTF-8 编码文件 byte order mark (BOM) 开头。文本编辑器和 IDE 不显示 Unicode 编码文件的 BOM。

UTF-8 BOM 为 0xEF 0xBB 0xBF,如果文本编辑器显示 Windows-1252 代码页,则显示为 。文本编辑器 UltraEdit 允许覆盖使用文件 - 打开的自动 Unicode 检测,并在文件打开对话框中选择 ASCII on Open as 选项打开 UTF-8 编码的文件作为 ASCII/ANSI 文件。在文本编辑模式下也可以看到带有 BOM 的 UTF-8 编码 Unicode 文件开头的 UTF-8 BOM。

查找顶部带有 UTF-8 BOM 的文件的一个非常简单的搜索是搜索包含字符串  的文件。 。或者,如果您不想依赖代码页,请使用表达式 \xEF\xBB\xBF 运行 Perl 正则表达式搜索。 .

使用空字符串作为替换字符串应该会导致从所有文件中删除 UTF-8 BOM。

\R可用于匹配 DOS/Windows 或 UNIX 或 MAC 线路终端。换句话说\R相当于 (?:\r\n|\n|\r)或更短(?:\r?\n|\r)

但是,由于我的字节顺序标记怀疑,我建议使用作为搜索字符串

(?:\xEF\xBB\xBF\s*|\s+)(?=<\?php)

说明:

(?: ... ) ... OR 表达式的非标记组。

\xEF\xBB\xBF\s* ...具有零个或多个的 UTF-8 BOM whitespaces附后。

| ...意味着“或”。

\s+ ...空白字符一次或多次。

(?=<\?php) ...积极的前瞻检查下一个字符是否是 <?php没有真正匹配它们。

该搜索字符串不限于文件的开头。但也许它仍然足以满足您查找带有 UTF-8 BOM 或 PHP 文件开头带有空行的文件的需求。

关于regex - 在 PHP 打开或关闭标记之前检查空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27336082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com