PHP,大写为单个字符

PHP,大写为单个字符,php,string,char,ascii,Php,String,Char,Ascii,基本上,我想知道的是: echo chr(ord('a')-32); 在每一个可能的PHP安装上,每一次都为每个a-z字母工作 请阅读此处了解一些背景信息 搜索了一段时间后,我意识到在PHP中更改字符串大小写的大多数问题只适用于整个单词或句子 我有一个例子,我只需要上1个字符 我认为使用像strtoupper、ucfirst和ucwords这样的函数对于单个字符来说是过分的,因为它们是为处理字符串而设计的 因此,在查看了php.net之后,我找到了函数chr和ord,它们将字符转换为ascii

基本上,我想知道的是:

echo chr(ord('a')-32);
在每一个可能的PHP安装上,每一次都为每个a-z字母工作

请阅读此处了解一些背景信息 搜索了一段时间后,我意识到在PHP中更改字符串大小写的大多数问题只适用于整个单词或句子

我有一个例子,我只需要上1个字符

我认为使用像
strtoupper
ucfirst
ucwords
这样的函数对于单个字符来说是过分的,因为它们是为处理字符串而设计的

因此,在查看了php.net之后,我找到了函数
chr
ord
,它们将字符转换为ascii表示(并返回)

在玩了一会儿之后,我发现我可以通过

echo chr(ord('a')-32);
这只是将字符在ascii表中偏移32个位置。正好是角色的上一个版本

我之所以在stackoverflow上发布这篇文章,是因为我想知道是否有任何边缘案例会破坏这个简单的转换

更改php脚本的字符集或类似的内容会影响结果吗


这是PHP中增加字符上限的标准方法吗?或者还有其他吗?

ASCII代码在PHP安装之间不会更改,因为它基于ASCII表

引自:

ASCII代表信息交换的美国标准代码。计算机只能理解数字,因此ASCII码是字符的数字表示,例如“a”或“@”或某种动作。ASCII是很久以前发展起来的,现在非打印字符很少用于其原始用途

引自:

返回一个包含ascii指定字符的单字符字符串

在任何情况下,我都会说,用你的方式做比用
strtoupper()
做要强得多


ASCII代码在PHP安装之间不会更改,因为它基于ASCII表

引自:

ASCII代表信息交换的美国标准代码。计算机只能理解数字,因此ASCII码是字符的数字表示,例如“a”或“@”或某种动作。ASCII是很久以前发展起来的,现在非打印字符很少用于其原始用途

引自:

返回一个包含ascii指定字符的单字符字符串

在任何情况下,我都会说,用你的方式做比用
strtoupper()
做要强得多


ASCII代码在PHP安装之间不会更改,因为它基于ASCII表

引自:

ASCII代表信息交换的美国标准代码。计算机只能理解数字,因此ASCII码是字符的数字表示,例如“a”或“@”或某种动作。ASCII是很久以前发展起来的,现在非打印字符很少用于其原始用途

引自:

返回一个包含ascii指定字符的单字符字符串

在任何情况下,我都会说,用你的方式做比用
strtoupper()
做要强得多


ASCII代码在PHP安装之间不会更改,因为它基于ASCII表

引自:

ASCII代表信息交换的美国标准代码。计算机只能理解数字,因此ASCII码是字符的数字表示,例如“a”或“@”或某种动作。ASCII是很久以前发展起来的,现在非打印字符很少用于其原始用途

引自:

返回一个包含ascii指定字符的单字符字符串

在任何情况下,我都会说,用你的方式做比用
strtoupper()
做要强得多



重新发明车轮的原因是?不,您应该在该范围内安全。为了确保您可以获取php的源代码发行版,并检查strtoupper、ucfirst等是如何实现的。但是,如果没有性能约束,请使用可用的方法。因为在PHP中没有“a”是字符串而不是字符这样的过度杀戮,strtoupper将在它之后退出,因为没有其他事情要做。再说一次:“a”是字符串,而不是PHP中的字符。除了您的解决方案是过度杀戮(可能更慢,您可能会对此进行测试…)之外,它很可能只适用于非常小的字符集。大多数较大的字符集,如utf-8(无论如何都应该使用),对其值没有那么严格。简而言之:使用strtoupper是因为它安全、快速、可靠。仅在使用ASCII时安全,而不使用UTF-8;但是strtoupper()等在UTF-8中也不安全;但是,有一些等效的mb_*函数用于处理UTF-8字符的大小写转换。您可能还需要检查一个字符是否已经是大写,然后再通过向ord值中添加32将其大写。。。内置的strtoupper()函数已经为您实现了这一点,重新设计轮子的原因是?不,您应该在该范围内安全。为了确保您可以获取php的源代码发行版,并检查strtoupper、ucfirst等是如何实现的。但是,如果没有性能约束,请使用可用的方法。因为在PHP中没有“a”是字符串而不是字符这样的过度杀戮,strtoupper将在它之后退出,因为没有其他事情要做。再说一次:“a”是字符串,而不是PHP中的字符。除了您的解决方案是过度杀戮(可能更慢,您可能会对此进行测试…)之外,它很可能只适用于非常小的字符集。大多数较大的字符集,如utf-8(无论如何都应该使用),对其值没有那么严格。