如果我没有关闭PHP标记,Notepad ++函数列表PHP无法正常工作

时间:2016-01-30 12:30:20

标签: php regex function plugins notepad++

我想使用notepad ++中的函数列表功能来获取我的PHP代码 实际上,如果我编写关闭PHP标记(?>),函数列表正常工作..但如果我没有关闭PHP标记,则函数列表不起作用

我只是想,功能列表仍在工作,即使我没有关闭PHP标记

查看图片 顶部没有关闭PHP标记 底部是关闭PHP标记

enter image description here

然后我读了这个记事本++函数列表doc https://notepad-plus-plus.org/features/function-list.html

我想,我需要编辑正则表达式..但问题是我无法编辑正则表达式,因为正则表达式对我来说太复杂了

这是PHP函数列表的正则表达式和xml

<parser id="php_function" displayName="PHP" commentExpr="((/\*.*?\*)/|(//.*?$))">
<classRange
    mainExpr="^[\s]*(class|abstract[\s]+class|final[\s]+class)[\t ]+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*([\s]*|[\s]*(extends|implements|(extends[\s]+(\\|[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)+[\s]+implements))[\s]+(\,[\s]*|(\\|[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*))+[\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>

有人可以帮助我

谢谢

5 个答案:

答案 0 :(得分:10)

[解决]

我们只需要在关闭类或功能标签后添加输入/添加新行

所以也许这是一个错误

由于

答案 1 :(得分:3)

对我来说,问题是没有关闭PHP标记。

可能对某人有帮助。

添加&#34;?&gt;&#34;关闭PHP标签,如果它已经不在那里。

答案 2 :(得分:2)

函数列表无法呈现函数树有几个原因。

  1. 在旧版本的Notepad ++中,PHP部分需要关闭选项卡。只需在文件末尾添加?>即可。有时在关闭标签后需要换行。
  2. functionList.xml不正确的解析PHP文件。例如,此功能描述打破了功能列表呈现:
  3.     /**
         * Unset an instance of this class.
         *
         * @param Spreadsheet $spreadsheet Injected spreadsheet identifying the instance to unset
         */
        public function __destruct()
        {
            $this->workbook = null;
        }
    

    在这种情况下,您必须更改(或添加)commentExpr在%APPDATA%的functionList.xml中 (有两个functionList.xml位置。 Program Files 目录和%APPDATA%目录)

    <parser
        id         ="php_syntax"
        displayName="PHP"
        commentExpr="(?'MLC'(?s-m)/\*.*?\*/)|(?'SLC'(?m-s)(?:#|/{2}).*$)|(?'STRLIT'(?s-m)&quot;[^&quot;\\]*(?:\\.[^&quot;\\]*)*&quot;|&apos;[^&apos;\\]*(?:\\.[^&apos;\\]*)*&apos;)"
    >
    

答案 3 :(得分:1)

内部“功能列表”对我来说根本不起作用。我试图删除一些或两个“functionlist.xml”文件,这些文件在某些​​网站上推荐,但没有任何对我有用。

我更喜欢插件“functionList” https://sourceforge.net/projects/npp-plugins/files/Function%20List/

来自Patch https://github.com/gwarnants/FunctionList-PHP-Patch

适用于我的Notepad ++ 6.9.2

答案 4 :(得分:0)

替换为PHP解析器functionList.xml。使用您可以在notepad ++论坛中找到的新版本->

https://notepad-plus-plus.org/community/topic/15124/php-function-list-and-abstract-functions/17

它可以处理抽象类和函数。