PHP判断字符串编码并且获取字符串中的中文 + 清除空格
2012-02-22 14:48
981 查看
参考URL:http://www.w3.org/International/questions/qa-forms-utf-8.en.php
$result = preg_match(’%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs’, $string);
如果$result为真,则是UTF-8编码的字符串,否为ANSI
以上面为条件,匹配出字符串中的中文
if ($result) {
preg_match_all(“/[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}/”, $str, $arr);
print_r($arr[0]);
} else {
preg_match_all(“/[\x80-\xFF]./”, $str, $arr);
print_r($arr[0]);
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PHP清除空格
日常我们处理数据时经常会产生额外的空格,如果你想进行诸如比较字符串时,就会引致问题;同时也浪费额外的储存空间。
如何除掉空格?也许你首先会想到PHP内建函数trim()。没错,它处理字符的始末部分确实有效,但是,这种情况下它就办不到了:将多个空格变为一个空格,将空格变为有序的规则的队列等等…
于是,正则表达式就派上用场了。看看下面的代码:
$str = ” This line contains\tliberal \r\n use of whitespace.\n\n”;
// 首先去掉头尾空格
$str = trim($str);
// 接着去掉两个空格以上的
$str = preg_replace(’/\s(?=\s)/’, ‘’, $str);
// 最后将非空格替换为一个空格
$str = preg_replace(’/[\n\r\t]/’, ‘ ‘, $str);
使用上面的例子可以去掉所有多余的空格。首先使用TRim()去头尾空格,接着用preg_replace()去掉重复的空格。
当中的(?=)表示只匹配后面的空格跟随前面的空格的空格。
$result = preg_match(’%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs’, $string);
如果$result为真,则是UTF-8编码的字符串,否为ANSI
以上面为条件,匹配出字符串中的中文
if ($result) {
preg_match_all(“/[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}/”, $str, $arr);
print_r($arr[0]);
} else {
preg_match_all(“/[\x80-\xFF]./”, $str, $arr);
print_r($arr[0]);
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PHP清除空格
日常我们处理数据时经常会产生额外的空格,如果你想进行诸如比较字符串时,就会引致问题;同时也浪费额外的储存空间。
如何除掉空格?也许你首先会想到PHP内建函数trim()。没错,它处理字符的始末部分确实有效,但是,这种情况下它就办不到了:将多个空格变为一个空格,将空格变为有序的规则的队列等等…
于是,正则表达式就派上用场了。看看下面的代码:
$str = ” This line contains\tliberal \r\n use of whitespace.\n\n”;
// 首先去掉头尾空格
$str = trim($str);
// 接着去掉两个空格以上的
$str = preg_replace(’/\s(?=\s)/’, ‘’, $str);
// 最后将非空格替换为一个空格
$str = preg_replace(’/[\n\r\t]/’, ‘ ‘, $str);
使用上面的例子可以去掉所有多余的空格。首先使用TRim()去头尾空格,接着用preg_replace()去掉重复的空格。
当中的(?=)表示只匹配后面的空格跟随前面的空格的空格。
相关文章推荐
- php远程获取网站的关键字信息(并附:php判断字符串编码)
- php判断 获取字符串的编码类型
- 通过Unicode编码区间的划分获取字符串中中文、英文、数字
- php使用strlen()判断中文汉字字符串长度
- PHP json_decode 对 JSON 格式的字符串进行编码并获取对应的值
- php 判断字符串是中文还是英文
- PHP判断字符串编码是否utf8并转换的方法
- php字符串截取,支持中文和其他编码
- (转载)PHP如何获取中文字符串长度 utf8_strlen()/mb_strlen()
- PHP utf-8中文截取无乱码(字符串判断版本)
- PHP中文处理:中文字符串截取(mb_substr)和获取中文字符串字数
- PHP实例——判断字符串是否为UTF-8编码
- PHP清除数组中所有字符串两端空格的方法
- [转]php获取含中文字符串长度
- 【代码】php 中文字符串首字母函数的获取
- PHP判断中文字符串的长度和字节长度
- php判断字符串是否含有中文
- php中中文字符串的截取和获取长度 mb_substr() mb_strlen()
- php中判断字符串是否全是中文或含有中文的实现代码