php - PHP 文件中嵌入式 SQL 的 Notepad++ 语法高亮
问题描述
Notepad++ 与 Scintilla 词法分析器一起工作,以某种方式识别 .php 文件中的语言切换。它似乎默认为 HTML 并识别<?php ... ?>
,并<script type="text/javascript">...</script>
作为嵌入式 PHP 和 javascript 语言的分隔符,因此应用了正确的语法突出显示和代码完成。
问题:是否有可能让它对 SQL 做同样的事情,也许使用 heredoc 分隔符,例如<<<sql ... sql
?
我搜索了 web 和 notepad++ 论坛,但没有成功。UDL 根据其扩展名处理文件的内容,这无济于事,因为我专门寻找嵌入在 .php 文件中的代码。我还尝试在记事本的 ProgramData 文件夹中挖掘文件,但找不到任何定义语言切换分隔符的内容。
SQL 的记事本插件都希望将文件的全部内容格式化为 sql,所以这也无济于事,我只希望它仅适用于嵌入式部分。事实上,我宁愿找到一个没有插件也能工作的解决方案。
编辑:根据要求的示例代码
<p>Some html code here</p>
<?php
$value1 = 1234;
$sql = <<<sql
select * from table1
where column1 = $value1
sql;
$rows = mysqli->query($sql);
?>
<script type="text/javascript">
var results = <?php echo queryToJSresults($rows);?>;
</script>
一切都是在 Notepad++ 中正确突出显示的语法。我想要的是语法高亮<<<sql
和sql
使用 SQL 之间的位。目前它(正确地)将其视为字符串文字,与带引号的字符串相同。
解决方案
你要做的是一件很难的事情。可以使用用户定义语言 (UDL) 工具来完成,但我认为不会得到您期望的确切结果。
假设您要打开一个 .php 文件扩展名并获取以下行:
$result = mysql_query('SELECT * WHERE 1=1');
这一行有一个有效的 SQL 语句,但是这个语句是一个字符串,UDL 将它识别为一个字符串,在 markSELECT
或WHERE
您可以创建一个全新的 UDL,与 PHP 的原生 Notepad++ 完全相同,但丢弃字符串的突出显示。之后,添加保留的 SQL 键以突出显示(SELECT、FROM、IN 等)。
PRO:突出显示获取 SQL
CON:丢失的字符串在整个文件中突出显示
对我来说,成本比收益更重要
根据您的建议添加特殊标记
<<< sql ... sql?
这将使文件无法编译,所以我会放弃这个选项。
推荐阅读
- laravel - 删除功能不适用于控制器
- c# - 将 MagickImage 转换为位图
- flutter - 颤动中浮动操作按钮上的通知徽章
- javascript - 如何使用javascript根据数组项过滤对象?
- google-tag-manager - 谁知道 Facebook 标准转换的 GTM 脚本:预约预约和电话号码点击?
- r - 使用 facet_wrap_paginate 循环无序交替生成的图
- excel - 有谁知道如何在 VBA 中关闭基于 ODATA (xlConnectionTypeModel) 的 PowerQuery 连接的后台刷新?
- java - 使用 JUnit/TestNG 作为列表传递套件中的参数变量
- javascript - 必须有一种方法可以程序化地生成这个数组
- c++ - 用于适配器的 c++ crtp:传递抛出临时返回值