gpt4 book ai didi

php - 用
转载 作者:IT王子 更新时间:2023-10-29 00:05:57 25 4
gpt4 key购买 nike

多年来我收集了大量的 php 文件,我需要将所有简短的打开标签正确地替换为正确的显式打开标签。

change "<?" into "<?php"

我认为这个正则表达式会正确选择它们:

<\?(\s|\n|\t|[^a-zA-Z])

处理类似的情况

<?//
<?/*

但我不确定如何处理整个文件夹树并检测 .php 文件扩展名并应用正则表达式并在文件更改后保存文件。

我觉得如果您掌握了正确的工具,这将非常简单。 (在 sed 手册中有一个有趣的 hack:4.3 Example/Rename files to lower case)。

也许我错了。
或者这可能是一个单线器?

最佳答案

不要使用正则表达式来解析正式语言——你总是会遇到意想不到的大海捞针。喜欢:

<?
$bla = '?> now what? <?';

使用了解语言结构的处理器会更安全。对于 html,那将是一个 xml 处理器;对于 php,内置 tokenizer extension .它有 T_OPEN_TAG 解析器 token ,匹配 <?php , <?<% , 和 T_OPEN_TAG_WITH_ECHO , 匹配 <?=<%= .要替换所有短的开放标签,您找到所有这些标记并替换 T_OPEN_TAG<?phpT_OPEN_TAG_WITH_ECHO<?php echo .

实现留给读者作为练习:)

编辑 1:指挥官对 provide one 非常友善.

编辑 2:在带有 short_open_tag 的系统上在 php.ini 中关闭, <? , <% , 和 <?=不会被替换脚本识别。要使脚本在此类系统上运行,请启用 short_open_tag通过命令行选项:

php -d short_open_tag=On short_open_tag_replacement_script.php

附注the man page for token_get_all()并在 google 上搜索 tokenizertoken_get_all 和解析器标记名称的创造性组合可能会有所帮助。

p.p.s.另见 Regex to parse define() contents, possible?就在这里

关于php - 用 <?php 替换 PHP 短打开标签的批处理脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/684587/

25 4 0

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