php 获取字符串的数字

php 获取字符串的数字,第1张

<php

header('content-type:text/html;charset=utf-8;');//utf-8编码,避免乱码

$str='2、小孩自费项目:香溪古堡    (08米以下免票,08—12米25元,12米以上50元)<br/>';

$data=array();//找到的数字放这里

$newdata=array();//替换的格式放这里

$num=preg_match_all("/[^](\d+\)\d+/",$str,$re,PREG_PATTERN_ORDER);//用正则表达式把数字全找出来

foreach($re['0'] as $value){

preg_match("/(\d+\)\d+/",$value,$value2);//会匹配到非& # 61618的字符,所以还要清除掉那些非& # 61618得字符

$data[]=$value2[0];

}

$data=array_unique($data);//清理相同值(避免重复替换)

foreach($data as $value)

$newdata[]="<span style=\"color:red\">{$value}</span>";

$str=str_replace($data,$newdata,$str);//替换

echo "{$str}<br/>";//输出测试

>

亲,在php53下通过测试,发现bug请告诉我,注释不够请追问哟!

在PHP中专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数并非PHP的核心函数,所以,它们常常有可能没有开启。要在phpini中开启即可。获取长度实例:1 ,utf-8环境下使用

header('Content-type:text/html;charset=utf-8');

/

 可以统计中文字符串长度的函数

 @param $str 要计算长度的字符串

 @param $type 计算长度类型,0(默认)表示一个中文算一个字符,1表示一个中文算两个字符

/

function abslength($str)

{

    if(empty($str)){

        return 0;

    }

    if(function_exists('mb_strlen')){

        return mb_strlen($str,'utf-8');

    }

    else {

        preg_match_all("//u", $str, $ar);

        return count($ar[0]);

    }

}

$str = '我们都是中国人啊,ye!';

$len = abslength($str);

var_dump($len);  //return 12

$len = abslength($str,'1');

echo '<br />'$len;  //return 22

 

/

    utf-8编码下截取中文字符串,参数可以参照substr函数

    @param $str 要进行截取的字符串

    @param $start 要进行截取的开始位置,负数为反向截取

    @param $end 要进行截取的长度

/

function utf8_substr($str,$start=0) {

    if(empty($str)){

        return false;

    }

    if (function_exists('mb_substr')){

        if(func_num_args() >= 3) {

            $end = func_get_arg(2);

            return mb_substr($str,$start,$end,'utf-8');

        }

        else {

            mb_internal_encoding("UTF-8");

            return mb_substr($str,$start);

        }       

 

    }

    else {

        $null = "";

        preg_match_all("//u", $str, $ar);

        if(func_num_args() >= 3) {

            $end = func_get_arg(2);

            return join($null, array_slice($ar[0],$start,$end));

        }

        else {

            return join($null, array_slice($ar[0],$start));

        }

    }

}

$str2  = 'wo要截取zhongwen';

echo '<br />';

echo utf8_substr($str2,0,-4); //return wo要截取zhon

2,支持gb2312,gbk,utf-8,big5 中文截取方法

/

中文截取,支持gb2312,gbk,utf-8,big5

@param string $str 要截取的字串

@param int $start 截取起始位置

@param int $length 截取长度

@param string $charset utf-8|gb2312|gbk|big5 编码

@param $suffix 是否加尾缀

/

public function csubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)

{

if(function_exists("mb_substr"))

{

if(mb_strlen($str, $charset) <= $length) return $str;

$slice = mb_substr($str, $start, $length, $charset);

}

else

{

$re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";

$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";

$re['gbk']          = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";

$re['big5']          = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";

preg_match_all($re[$charset], $str, $match);

if(count($match[0]) <= $length) return $str;

$slice = join("",array_slice($match[0], $start, $length));

}

if($suffix) return $slice"…";

return $slice;

}

PHP对中文字符串的处理一直困扰于刚刚接触PHP开发的新手程序员。下面简要的剖析一下PHP对中文字符串长度的处理:

(1)PHP自带的函数如strlen()、mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节;

(2)中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8。utf-8能兼容更多的字符,所以受到很多站长的喜爱。gbk与utf-8对中文的编码不同,导致中文在gbk与utf-8编码下所占字节也有差异。

1、把 GBK 编码字串转换成 UTF-8 编码字串 view plaincopy to clipboardprint <php header("content-Type: text/html; charset=Utf-8"); echo mb_convert_encoding("你是我的好朋友","UTF-8","GBK"); > 2、把 UTF-8 编码字串转换成 GB2312 编码字串 view plaincopy to clipboardprint // 注意将此文件存盘成 utf-8 编码格式文件再测试 <php header("content-Type:text/html;charset=gb2312"); echo mb_convert_encoding("你是我的好朋友","gb2312","utf-8"); > // 注意将此文件存盘成 utf-8 编码格式文件再测试 <php header("content-Type: text/html; charset=gb2312"); echo mb_convert_encoding("你是我的好朋友","gb312","utf-8"); > 3、对整个页面进行转换 该方法适用所有编码环境。这样把前128个字符以外(显示字符)的字符集都用 NCR(Numeric character reference,如“汉字”将转换成“汉字”这种形式)来表示,这样的编码在任意编码环境下页面都能正常显示。 在php文件的头部加上下面三行代码: view plaincopy to clipboardprint mb_internal_encoding(”gb2312″); // 这里的gb2312是你网站原来的编码 mb_>

以上就是关于php 获取字符串的数字全部的内容,包括:php 获取字符串的数字、php如何获取中文字符长度,一个中文字符算一个、PHP怎么获取字符串长度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9339138.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存