单独使用时替换单词


Replace word when stand alone

我有一个查询:

select last_name as lastname from table

我想将"as"关键字改为大写(以便我的脚本的其余部分正常运行),但仅当它单独存在时。

当我使用这个脚本时:

$toupper = str_replace(array("select","from","where","order by", "group by", "as"),
                  array("SELECT","FROM","WHERE","ORDER BY", "GROUP BY","AS"),$query);

它还将更改其他具有"as"的字符串。所以它变成了:

SELECT lASt_name AS lAStname FROM table

如何将独立关键字"as"替换为"as"?

您应该使用一个正则表达式来只匹配整个单词:

$toupper = preg_replace("/'bas'b/", "AS", $query);

在单词前后使用单词边界比在相同位置使用空格更有效,因为它匹配所有非单词字符,如空格、换行符、连字符等。您可以在此处阅读有关锚'b的信息。

您可以使用几乎与当前代码完全相同的代码。

由于AS语句前后总是有一个空格,只需稍微修改str_replace,使其在asAS前后有一个空间,如下所示:

$toupper = str_replace(array("select","from","where","order by", "group by", " as ",),array("SELECT","FROM","WHERE","ORDER BY", "GROUP BY"," AS "),$query);

结果是:

SELECT last_name AS lastname FROM table

通过这种方式,您可以保持所拥有的代码几乎相同。