在 PHP 源代码中使用原始表情符号安全吗?
Is it safe to use raw emojis in PHP source code?
示例:
$fire = '';
我知道 PHP 5+ 本机支持此功能,但这是最佳实践还是我应该使用它们的代码点来存储它们,如果是这样,为什么?
就你的编辑器和PHP编译器而言,它只是文本,''与'fire'或'Φωτιì'没有区别。
当PHP运行时,它会从文件中读取字节并将它们放入内存中,而不关心它们的含义。这将导致您最有可能遇到的问题:如果您在文本编辑器中将文件保存为 UTF-16,然后将该字符串回显给浏览器,告诉它它是 UTF-8,浏览器将不会显示正确的事物。但这很容易通过确保您的编辑器始终使用 UTF-8 来避免,并且您的输出 headers 告诉浏览器您正在使用什么。
如果你不相信你的编辑会这样做,而你是 运行 PHP7,你可以用转义符号 "\u{1f525}"
来写它,但是当它运行,相同的字节将在内存中结束。
如果您将文本发送到其他地方(例如,发送到数据库)并且其他地方不知道将其作为 UTF-8 处理,您可能会遇到类似的问题。在源文件中如何编写字符串不会对此产生任何影响,但这只是确保所有配置都匹配的情况。
注意:您实际上不必为此使用 UTF-8,您可以使用 UTF-16 或其他一些编码,只要您保持一致即可;但 UTF-8 是目前最常见的,尤其是在网络上。
示例:
$fire = '';
我知道 PHP 5+ 本机支持此功能,但这是最佳实践还是我应该使用它们的代码点来存储它们,如果是这样,为什么?
就你的编辑器和PHP编译器而言,它只是文本,''与'fire'或'Φωτιì'没有区别。
当PHP运行时,它会从文件中读取字节并将它们放入内存中,而不关心它们的含义。这将导致您最有可能遇到的问题:如果您在文本编辑器中将文件保存为 UTF-16,然后将该字符串回显给浏览器,告诉它它是 UTF-8,浏览器将不会显示正确的事物。但这很容易通过确保您的编辑器始终使用 UTF-8 来避免,并且您的输出 headers 告诉浏览器您正在使用什么。
如果你不相信你的编辑会这样做,而你是 运行 PHP7,你可以用转义符号 "\u{1f525}"
来写它,但是当它运行,相同的字节将在内存中结束。
如果您将文本发送到其他地方(例如,发送到数据库)并且其他地方不知道将其作为 UTF-8 处理,您可能会遇到类似的问题。在源文件中如何编写字符串不会对此产生任何影响,但这只是确保所有配置都匹配的情况。
注意:您实际上不必为此使用 UTF-8,您可以使用 UTF-16 或其他一些编码,只要您保持一致即可;但 UTF-8 是目前最常见的,尤其是在网络上。