您可以将 preg_replace 正则表达式与“not”一起使用吗?健康)状况?

发布于 2024-10-15 12:29:31 字数 680 浏览 4 评论 0原文

我正在使用 SQL 字符串,需要将 "SELECT" 替换为 "SELECT SQL_CALC_FOUND_ROWS"。因为我并不总是知道 SQL 是什么,所以它可能已经有 SQL_CALC_FOUND_ROWS,所以我需要考虑这种情况,并且在这种情况下不匹配。

这是我到目前为止所拥有的:

preg_replace('/(^\s+SELECT)/i', 'SELECT SQL_CALC_FOUND_ROWS',$sql);

这将返回: 从表中选择 SQL_CALC_FOUND_ROWS *

用于:

“\n 从表中选择 *”

或者

“从表中选择*”

我可以这样做:

<代码> if (!stristr($sql,'SQL_CALC_FOUND_ROWS') ) { // 做我的替换 }

但是有没有一种方法可以在一个 preg_replace 中完成这一切,和/或者它是否更快(我预计这将被广泛使用)?

I'm working with SQL strings, and need to replace "SELECT" with "SELECT SQL_CALC_FOUND_ROWS". Because I don't always know what the SQL is, there's potential that it will already have SQL_CALC_FOUND_ROWS so I need to account for that case, and not match in that case.

This is what I have so far:

preg_replace('/(^\s+SELECT)/i', 'SELECT SQL_CALC_FOUND_ROWS',$sql);

This will return:
SELECT SQL_CALC_FOUND_ROWS * FROM table

FOR:

"\n SELECT * from table"

OR

"SELECT * from table"

I can do:


if (! stristr($sql,'SQL_CALC_FOUND_ROWS') )
{
// do my replacement
}

But is there a way to do this all in one preg_replace, and/or is it any faster (I expect this will be used quite extensively)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心房敞 2024-10-22 12:29:31

您可以使用负前瞻:

/SELECT(?!\s+SQL_CALC_FOUND_ROWS)/

You could use a negative lookahead:

/SELECT(?!\s+SQL_CALC_FOUND_ROWS)/
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文