php正则表达式匹配中文
在php中来判断字符串是否为中文,就会沿袭这个思路:
代码如下 | 复制代码 |
<?php $str = "php编程"; if (preg_match("/^[u4e00-u9fa5]+$/",$str)) { print("该字符串全部是中文"); } else { print("该字符串不全部是中文"); } ?> |
不过,很快就会发现,php并不支持这样的表达,报错:
Warning: preg_match() [function.preg-match]: Compilation failed: PCRE does not support L, l, N, U,
or u at offset 3 in test.php on line 3
刚开始从google上查了很多次,想从php正则表达式对于十六进制数据的
表达方式上进行突破,发现在php中,是用x表示十六进制数据的。于是,
变换成如下的代码:
代码如下 | 复制代码 |
$str = "php编程"; if (preg_match("/^[x4e00-x9fa5]+$/",$str)) { print("该字符串全部是中文"); } else { print("该字符串不全部是中文"); } |
貌似不报错了,判断的结果也正确,不过把$str换成“编程”两字,结果却还是显示“该字符串不全部是中文”,看
来这样的判断还是不够准确。
如果要精准匹配中文,即匹配纯中文字符,或匹配中文字符加上全角标点,则需要根据不同编码环境使用不同方法。
下面以两种常用的编码(gb2312,utf-8)
下面给两个例子:
代码如下 | 复制代码 |
(1) ANSI编程环境下: $strtest = “yyg中文字符yyg”; $pregstr = "/([".chr(0xb0)."-".chr(0xf7)."][".chr(0xa1)."-".chr(0xfe)."])+/i"; if(preg_match($pregstr,$strtest,$matchArray)){ echo $matchArray[0]; } //output:中文字符 (2) Utf-8编程环境下: $strtest = “yyg中文字符yyg”; $pregstr = "/[x{4e00}-x{9fa5}]+/u"; if(preg_match($pregstr,$strtest,$matchArray)){ echo $matchArray[0]; } //output:中文字符 |
在php遍历数组有三个函数foreach、each、list & each下面我们看它们是如何遍历多维数组的。
先看一个遍历二维数组
代码如下 | 复制代码 |
<?php |
下面看遍历三维数组
例1
代码如下 | 复制代码 |
function arr_fun($arr){ |
例2
代码如下 | 复制代码 |
<?php 输出结果 Array |
利用list与each遍历二维数组
代码如下 | 复制代码 |
<?php while (list($key, $value) = each($sports)) { |
unlink(filename,context)
例
代码如下 | 复制代码 |
if (unlink($file_delete)) { |
判断文件是否存在
代码如下 | 复制代码 |
$myfile = "./test1.txt"; |
批量删除文件
代码如下 | 复制代码 |
function delFileUnderDir( $dirName="../Smarty/templates/templates_c" ) |
例
删除目录下文件并指定那些不删除
代码如下 | 复制代码 |
<?php
|
格式化memory_get_usage()输出
代码如下 | 复制代码 |
<?php |
输出:256 kb
PHP memory_get_usage() 函数还可以有个参数,$real_usage,其值为布尔值。默认为 FALSE,表示得到的内存使用量不包括该函数(PHP 内存管理器)占用的内存;当设置为 TRUE 时,得到的内存为不包括该函数(PHP 内存管理器)占用的内存。
例
代码如下 | 复制代码 |
if (!function_exists('memory_get_usage')) { { $pid = getmypid(); if (IS_WIN) { exec('tasklist /FI "PID eq ' . $pid . '" /FO LIST', $output); return preg_replace('/[^0-9]/', '', $output[5]) * 1024; } else { exec("ps -eo%mem,rss,pid | grep $pid", $output); $output = explode(" ", $output[0]); return $output[1] * 1024; } } } |
下面是使用autoload机制加载Person类的例子:
代码如下 | 复制代码 |
/* autoload.php */ |
PHP的autoload机制的实现
要在PHP中实现自动加载类,那就要说到一个魔术方法了,__autoload();这是PHP5添加的自动加载类方法。只要定义了该函数,那么如果PHP运行到该类找不到时,就会根据__autoload的规则去寻找。
自己也规划一下,跟set_include_path和get_include_path来配合使用,使自动加载类更完善点,代码飙一下(模仿magento的):
代码如下 | 复制代码 |
$paths[] = BP . DS . ‘app’ . DS . ‘local’; $appPath = implode(PS, $paths); |
这样就可以为PHP添加默认的类加载环境,这里只是把路径添加到了PHP环境,如果还要继续添加规则,可以再定义__autoload函数,不过我这里是对象使用的,就换了一种方法:spl_autoload_register方法,下面是自己根据magento的规则,自己弄了一套,其实跟magento差不多。
代码如下 | 复制代码 |
class Autoload { /** public function __construct() { } /* public static function instance() { return self::$_instance; /** /* public function autoload($class) { $classFile = str_replace(‘ ‘, DS, ucwords(str_replace(‘_’, ‘ ‘, $class))); } |
相关文章
- 取双引号内的内容我们如果一个字符串中只有一个可以使用explode来获得,但如果有多个需要使用正则表达式来提取了,具体的例子如下。 写程序的时候总结一点经验,如何只...2016-11-25
- 今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
- 正则表达式是一门非常有用的并且进行模糊判断的一个功能了,我们下面来看通过正则来验证输入汉字、英语、数字,具体如下。 收藏了正则表达式。可以验证只能输入数...2016-11-25
- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
- 常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
- 这篇文章主要给大家介绍了一个关于JS正则匹配的踩坑记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-13
- 网址规则是可寻的,所以我们可以使用正则表达式来提取字符串中的url地址了,下面一起来看看小编整理的几个PHP正则表达式匹配验证提取网址URL实例. 匹配网址 URL 的...2016-11-25
- 这篇文章主要介绍了正则表达式中两个反斜杠的匹配规则,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
- 这篇文章给大家详细介绍了JS中使用正则表达式g模式和非g模式的区别,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2017-04-03
- 这篇文章主要介绍了C#正则表达式使用方法,大家参考使用...2020-06-25
- c#正则表达式,用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。...2020-06-25
- 本文主要介绍了JavaScript利用正则表达式替换字符串中内容的具体实现方法,并做了简要注释,便于理解。具有一定的参考价值,需要的朋友可以看下...2017-01-09
- 这篇文章主要介绍了python正则表达式常用函数及使用方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
- 这篇文章给大家介绍了Idea使用正则表达式批量替换字符串的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...2021-07-21
- 今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
- 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配,因为我想学完之后写个语法高亮练手,所以用js代码当作例子...2021-05-07
- 正则表达式的作用用来描述字符串的特征。本文重点给大家介绍C# 中使用正则表达式匹配字符的含义,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧...2020-06-25
- 这篇文章主要给大家介绍了关于利用Python验证的50个常见正则表达式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-11
- 这篇文章主要介绍了C#运算符和表达式,这是自学C#编程的第五篇,希望对大家的学习有所帮助。...2020-06-25
- 这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06