我有一个查询:
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
,使其在as
和AS
前后有一个空间,如下所示:
$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
通过这种方式,您可以保持所拥有的代码几乎相同。