包含反引号的字符串出现意外的strcmp行为

问题描述

我在使用strcmp函数时遇到了一个奇怪的问题。 我需要比较2个包含反引号(`)的字符串:

$result = strcmp('CREATE TABLE `postsTranslations` (','CREATE TABLE `posts` (');

我希望此比较的结果应为>0,因为postsTranslations按字母顺序位于posts之后。但是结果是-1。如果我删除反引号,一切都会按预期进行。在不删除反引号的情况下,可以按字母顺序比较这些字符串吗?

解决方法

您需要在此处使用strcasecmp。它执行二进制安全的不区分大小写的字符串比较。