Notepad++ - 在 php 中突出显示 HTML 标签

Notepad++ - 在 php 中突出显示 HTML 标签

让 php 回显 html 标签。notepad++ 6.4.5 可以突出显示 php 内部和 php 外部的标签。

notepad++ 6.5 可以突出显示 php 外部的标签,而 php 代码内部没有突出显示。

如何启用 php 代码中的标签突出显示?

记事本++ 6.4.5在此处输入图片描述 在此处输入图片描述

记事本++ 6.5

在此处输入图片描述 在此处输入图片描述

答案1

我原本希望 notepad++ 的开发人员能给出解决方案,重新提供在 php 代码中高亮显示 html 代码的功能。但这并没有发生……因此我找到了一个临时解决方法:

1)在 notepad++ 中打开 php 文件

2)设置 HTML 语言:转到语言 => H => HTML

3)现在 html 标签在 php 代码中突出显示。

如果您关闭并再次打开 php 文件,则必须再次执行 1-3。

为了使此操作自动完成:

编辑 langs.xml

1)更换

<Language name="html" ext="html htm shtml shtm xhtml hta"

<Language name="html" ext="html htm shtml shtm xhtml hta php"

这将使 php 文件被解析为 html 语言

2)更换

<Language name="php" ext="php php3 phtml"

<Language name="php" ext="php1 php3 phtml"

这将禁止将 php 文件解析为 php 语言。如果不执行步骤 2 => 步骤 1 则无效。

编辑 functionList.xml

进行这些更改后,函数列表将为空。以下是修复方法:需要编辑 functionList.xml

1)更换:

<association langID="6" id="java"/>
<association langID="9" id="xml_node"/>

<association langID="6" id="java"/>
<association langID="8" id="html_function"/>
<association langID="9" id="xml_node"/>

2)在最后一个关闭之后,添加这个(它是 php_function 的副本,重命名为 html_function):

        <parser id="html_function" displayName="PHP" commentExpr="((/\*.*?\*)/|(//.*?$))">
            <classRange
                mainExpr="^[\s]*(class|abstract[\s]+class|final[\s]+class)[\t ]+[\w]+([\s]*|[\s]*(extends|implements)[\s]+[\w\\]+[\s]*)?\{"
                openSymbole = "\{"
                closeSymbole = "\}"
                displayMode="node">
                <className>
                    <nameExpr expr="(class|abstract[\s]+class|final[\s]+class)[\s]+[\w]+"/>
                    <nameExpr expr="[\s]+[\w]+\Z"/>
                    <nameExpr expr="[\w]+\Z"/>
                </className>
                <function
                    mainExpr="^[\s]*((static|public|protected|private|final)*(\s+(static|public|protected|private|final))+[\s]+)?(function[\s]+)+([\w]+([\s]+[\w]+)?([\s]+|\*[\s]+|[\s]+\*|[\s]+\*[\s]+))?([\w_]+[\s]*::)?(?!(if|while|for|switch))[\w_~]+[\s]*\([^\{]*\{">
                    <functionName>
                        <funcNameExpr expr="(?!(if|while|for|switch))[\w_]+[\s]*\([^\{]*"/>
                        <!-- comment below node if want display method with parmas -->
                        <funcNameExpr expr="(?!(if|while|for|switch))[\w_]+"/>
                    </functionName>
                </function>
            </classRange>
            <function
                mainExpr="^[\s]*function[\s]+\w+\("

                displayMode="$className->$functionName">
                <functionName>
                    <nameExpr expr="(?!(if|while|for))[\w_]+[\s]*\("/>
                    <nameExpr expr="(?!(if|while|for))[\w_]+"/>
                </functionName>
                <className>
                    <nameExpr expr="[\w_]+(?=[\s]*::)"/>
                </className>
            </function>
        </parser>

编辑\plugins\APIs\html.xml\插件\APIs\php.xml(notepad++ 6.9.1 及以上版本需要此工具)

1)复制php.xml中的内容<AutoComplete>...</AutoComplete>并粘贴到html.xml中,然后</AutoComplete>

答案2

您应该将 PHP 文档创建为 HTML 文档的模板,如下所示。Notepad++ 只是通过将您的echo字符串视为 PHP 字符串而不是突出显示它们来支持良好的编码实践。如果您想分解为 HTML,则只需在?>PHP 语法突出显示的末尾添加一个,它就会将其突出显示为 HTML。然后<?php根据需要再次使用以启动 PHP 代码。您不需要echo输出 HTML,只需结束该<?php ... ?>块并像平常一样键入 HTML。

<!doctype html>
<html>
...
   <div><?php echo "content"; ?></div>
...
</html>

相关内容