/*
我们在处理中文数据时,经常要处理一些情况,下面就是针对
这些情况,我做的一些函数,已经用在了实践中
如果有问题,请与我联系
OICQ: 86804
*/
# 判断某个位置是中文字符的左还是右半部分,或不是中文
# 返回值 -1 左 0 不是中文字符 1 右
# 用法
/*
$a = 'this is 中文';
print is_chinese($a, 1); // 0
print is_chinese($a,8); // -1
print is_chinese($a,9); // 1
*/
function is_chinese(&$str, $location) {
$ch = true;
$i = $location;
while(ord($str[$i])>0xa0 && $i >= 0) {
$ch = !$ch;
$i --;
}
if($i != $location) {
$f_str = $ch ? 1: -1;
}
else {
$f_str = false;
}
return $f_str;
}
# 中文字符串倒置函数
# 如果一个将一个有中文的字符串用strrev倒过来,就会产生乱码
/*
print cstrrev('this is 中文'); // 文中 si siht
*/
function cstrrev(&$str) {
$long = strlen($str);
for($f_str='', $chinese=false, $i=$long-1; $i>=0; $i--) {
if(ord($str[$i]) > 0xa0) {
$chinese = ! $chinese;
if($chinese == false) {
$f_str .= $str[$i].$str[$i+1];
}
}
else {
$f_str .= $str[$i];
}
}
return $f_str;
}
/* 中文字符串截取函数
一些中文字符串截取函数经常有一些问题,例如在一些自动换行程序中
$a=“1中2”;
经两次截取后,
csubstr($str,$a,0,2);
csubstr($str, $a, 2,2)
由于载取位置指向“中”的右字节,可能会是这样的结果
1, 2
用本函数会产生正确的结果
1中, 2
*/
# start 开始位置,从0开始
# long = 0 则从start 一直取到字符串尾
# ltor = true 时从左到右取字符,false 时到右到左取字符
# $cn_len 中文字符按字节取还是字数取,如果按字数取,则一个中文当一个字节计算
function csubstr(&$str, $start=0, $long=0, $ltor=true, $cn_len=2) {
if($long == 0) $long = strlen($str);
if($ltor == false) $str = cstrrev($str);
PHP 中英文混合排版中处理字符串常用的函数
时间: 2024-12-27 03:56:48
PHP 中英文混合排版中处理字符串常用的函数的相关文章
PHP 中英文混合排版中处理字符串常用的函数_php技巧
# 判断某个位置是中文字符的左还是右半部分,或不是中文 # 返回值 -1 左 0 不是中文字符 1 右 # 用法 /* $a = 'this is 中文'; print is_chinese($a, 1); // 0 print is_chinese($a,8); // -1 print is_chinese($a,9); // 1 */ function is_chinese(&$str, $location) { $ch = true; $i = $location;
mysql sql字符串常用处理函数
select语句中只能使用sql函数对字段进行操作(链接sql server), select 字段1 from 表1 where 字段1.IndexOf("云")=1; 这条语句不对的原因是indexof()函数不是sql函数,改成sql对应的函数就可以了. left()是sql函数. select 字段1 from 表1 where charindex('云',字段1)=1; 字符串函数对二进制数据.字符串和表达式执行不同的运算.此类函数作用于CHAR.VARCHAR. BINAR
JavaScript字符串常用操作函数之学习笔记
字符串简介 使用英文单引号或双引号括起来,如:'Hello',"World",但是不能首尾的单引号和双引号必须一致,交错使用,如果要打印单引号或者双引号,可以使用转义字符\'(单引号),\"(双引号) 代码如下 复制代码 var str_1 = 'Hello World!'; //Hello World! var str_2 = "Hello World!"; //Hello World! var str_3 = '他说:"这样可以的.&q
sql和access中截取字符串的区别
一向对数据库不熟悉,今天又遇到简单而又被忽略的问题--字符串的截取. 在Excel处理数据过程中,我们常用substring,left,mid,right来截取字符:在.NET编程中,我们常用substring函数来截取字符串:在SQL Server中,我们也用substring函数来实现字符串截取功能.这容易让我们产生惯性思维. Access却不支持这个substring函数. 在Access中只能用left,right,mid来实现这个功能.具体不细讲.
在javascript中如何得到中英文混合字符串的长度
本文为大家介绍下Javascript中如何得到中英文混合字符串的长度,下面有个不错的教程,感兴趣的朋友可以参考下 有同事在公司的OA上发了个贴子,介绍在javascript中如何得到中英文混合字符串的长度. 用的是正则表达式. 代码如下: var str = "坦克是tank的音译"; var len = str.match(/[^ -~]/g) == null ? str.length : str.length + str.match(/[^ -~]/g).leng
在javascript中如何得到中英文混合字符串的长度_javascript技巧
有同事在公司的OA上发了个贴子,介绍在javascript中如何得到中英文混合字符串的长度. 用的是正则表达式. 复制代码 代码如下: var str = "坦克是tank的音译"; var len = str.match(/[^ -~]/g) == null ? str.length : str.length + str.match(/[^ -~]/g).length ; 我查了一下书,有点明白了: 西文常用字符集由空格" "(0x20)到"~"
用C#截取指定长度的中英文混合字符串
字符串 我们常做的一件事情,就是在文章系统中,截取一定长度的文章标题,超过指定长度,就加"..." 如两个字符串:string str1 = "中国人要啊abc呀~";string str2 = "1中国人23456abc呀~"; 要截取后,输出: str1 = "中国人要...";str2 = "1中国人2..."; 即要把中英文混合的字符串,在截取后,长度要一致,即8个字节的长度(不包括三个点),而且不
iOS中如何判断中英文混合的字符长度_IOS
废话不多说,直接给大家贴代码了. 一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //第一种方法 NSLog(@"--first-%i",[self convertToInt:@"123我爱你"]); //第二种方法 NSLog(@"--second--%ld",[self getToInt:@&
在微软拼音2003中巧妙实现中英文混合输入
您输入的中文文本中,是否经常混有英文单词或英文缩略语?在中英文输入法之间频繁转换非常麻烦,那么微软2003提供了什么解决方案呢? 微软拼音2003提供了三种输入风格,无论哪一种输入风格,都会自动识别以大写开头的英文单词.如果是小写英文呢?只需要在输入英文结束后打回车(注意,可不是空格键啊!).不仅如此,微软2003还特别提供了中英文混合输入方式.它的设置步骤如下: 1. 点击输入法提示条中的"功能菜单"按钮(见图1),在下拉菜单中选择"输入选项"; 图1 功能菜单