php - PHP 文件中嵌入 SQL 的 Notepad++ 语法高亮

标签 php sql notepad++ syntax-highlighting

Notepad++ 与 Scintilla 词法分析器配合使用,以某种方式识别 .php 文件中语言的开关。它似乎默认为 HTML 并识别 <?php ... ?> ,和<script type="text/javascript">...</script>作为嵌入式 PHP 和 javascript 语言的分隔符,从而应用正确的语法突出显示和代码完成。

问题:是否有可能让它对 SQL 执行相同的操作,也许使用像 <<<sql ... sql 这样的heredoc分隔符? ?

我搜索了网络和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 将其识别为字符串,先于标记 SELECTWHERE

您可以创建一个全新的 UDL,与 PHP 的原生 Notepad++ 完全相同,但放弃字符串的突出显示。之后,添加保留的 SQL 键以突出显示(SELECT、FROM、IN 等)。

PRO: GET SQL Highlighted

CON: LOST strings highlight in the whole file

对我来说,成本大于 yield

根据您的建议添加特殊标记

<<< sql ... sql?

这将使文件无法编译,所以我会放弃这个选项。

关于php - PHP 文件中嵌入 SQL 的 Notepad++ 语法高亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59172338/

相关文章:

php - 引号和参数化 SQL 查询的问题

php - 两个采用 PHP 双向加密 - 哪个更可取?

java - 使用 SUM 和 COUNT 的 JPQL native 查询

plugins - 如何在Notepad++中查看插件管理器

regex - 在 Notepad++ 中精确匹配单个数字后跟单词的正则表达式

mysql - Notepad++ 使用自动增量更改文本

php - echo 仅从数据库返回一个结果

php - mysqli_query、mysqli_fetch_array 和 while 循环

sql - 哪种排序规则最适合 MySQL 中的数据类型 INT?

sql - 如果 PostgreSQL 没有变化,事务是否记录到 WAL?