文档章节

PHP变量可用字符

庄生晓梦V
 庄生晓梦V
发布于 2017/02/04 10:44
字数 407
阅读 16
收藏 0
  1. 变量名是区分大小写的。
  2. 一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。正则表达式为:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'。
  3. 此处的字母是指 a-z,A-Z,以及 ASCII 字符从 127 到 255(0x7f-0xff)。因为正则\x只取后面的两位十六进制字符,中文utf-8等首字节都是符合的。所以支付中文在内多国语言。

手册:函数参考文本处理PCREPCRE模式PCRE 正则语法 

中描述(在”\x”后面,读取两个十六进制数(字母可以是大写或小写)。 在UTF-8模式, “\x{…}”允许使用, 花括号内的内容是十六进制有效数字。 它将给出的十六进制数字解释为 UTF-8 字符代码。原来的十六进制转义序列, \xhh, 匹配一个双字节的UTF-8字符,如果它的值大于127)

mb_internal_encoding("UTF-8"); 

$string = '严'; //e4b8a5

var_dump(bin2hex($string)); //string 'e4b8a5' 

$string1 = '並'; //e4b8a6
$string2 = '乥'; //e4b9a5
$string3 = '帥'; //e5b8a5
$string_b = 'β'; //ceb2


//\x后面只取前两个16进制位 所以一下正则等同 /^[\xe4]/
var_dump(preg_match('/^[\xe4b8a5]/',$string1));  //int 1
var_dump(preg_match('/^[\xe4b8a5]/',$string2));  //int 1
var_dump(preg_match('/^[\xe4b8a5]/',$string3));  //int 0

//utf8匹配模式下
var_dump(preg_match('/^[\x{e4b8a5}]/',$string));  // Warning: preg_match(): Compilation failed: character value in \x{} or \o{} is too large at offset 11
var_dump(preg_match('/^[\x{e4b8a5}]/u',$string));
var_dump(preg_match('/^[\x{e4b8}]/u',$string)); //int 0
var_dump(preg_match('/^[\xe4b8a5]/u',$string)); //int 0

var_dump(preg_match('/^[\x{20ac}]$/u','€'));

var_dump(preg_match('/^[\x{ceb2}]$/u','β'));


var_dump(bin2hex('€')); //string 'e282ac' 
var_dump(hex2bin('20ac'));

参考:

http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

https://segmentfault.com/q/1010000000695368

PHP 手册函数参考文本处理PCREPCRE模式

© 著作权归作者所有

下一篇: PHP类型约束
庄生晓梦V

庄生晓梦V

粉丝 1
博文 47
码字总数 8016
作品 0
青岛
程序员
私信 提问
Zend Framework 的 PHP 编码标准 命名约定

C.3. 命名约定 C.3.1. 类 Zend Framework 的类命名总是对应于其所属文件的目录结构的,ZF 标准库的根目录是 “Zend/”,ZF 特别(extras)库的根目录是 "ZendX/",所有 Zend Framework 的类在...

liumingzhij26
2013/05/05
0
0
复习PHP-语言参考-类型

1. PHP内置类型有 四种标量类型 bool int float(或称double) string 两种复合类型 array object 两种特殊类型 resource NULL 2.相关命令 查看类型 gettype 判断类型 is_xxx 强制转换类型 (x...

qzd1989
2014/04/21
0
0
使用PHP相关函数对字符串格式化的方法

通常情况下,网站后台程序在使用用户输入的字符串(一般都是通过HTML表单提交)之前,都必须对这些字符串进行格式化处理,以便使其符合程序运行的标准,防止错误和漏洞的产生。在下面的内容中...

coko
2013/07/16
98
0
初步了解 PHP V6 中的新特性

增强对 Unicode 的支持 PHP V6 中的主要特性是增强对 Unicode 的支持。目前,PHP 实际上是一个二进制处理器。PHP V5 没有提供原生的 Unicode 支持;它假定所有字符的长度都为 1 字节,这在处...

红薯
2009/06/07
820
0
Shell脚本入门-2

(一)定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名...

Avner
2018/03/06
51
0

没有更多内容

加载失败,请刷新页面

加载更多

如何递归计算目录中的所有代码行?

我们有一个PHP应用程序,并希望计算特定目录及其子目录下的所有代码行。 我们不需要忽略评论,因为我们只是想弄清楚。 wc -l *.php 该命令在给定目录中运行良好,但忽略子目录。 我当时认为...

技术盛宴
38分钟前
4
0
使用 try-with-resources 优雅关闭资源

我们知道,在 Java 编程过程中,如果打开了外部资源(文件、数据库连接、网络连接等、redis),我们必须在这些外部资源使用完毕后,手动关闭它们。 因为外部资源不由 JVM 管理,无法享用 JVM ...

七弦桐
45分钟前
4
0
04.深入浅出索引(上)

简单来说,索引的出现就是为了提高数据查询效率,就像书的目录一样。 索引的常见模型 索引实现的方式有很多种,所以这里就引入了索引模型的概念,可以用于提高读写效率的数据结构很多,比较常...

scgaopan
48分钟前
5
0
Redis哨兵、复制、集群的设计原理,以及区别

谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。 **哨兵(Sentinel):**可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的...

Java阿七
58分钟前
5
0
浅析laravel路由执行原理

目前很多文章已经对Laravel的执行原理做了详细介绍,这里只是为了个人做一下简单记录 首先看入口 index.php 关键的执行函数就是 handle方法 ,但是前面的几个预处理函数,包括了整合框架的大...

冻结not
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部