全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1376 8
2018-07-08
请问就是怎样写代码才能只取出中文的字符串?
附件列表
6INO96O09R))MLZZ(67M0~X.png

原图尺寸 2.34 KB

6INO96O09R))MLZZ(67M0~X.png

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-7-8 02:38:22
解决思路:把汉字按一个汉字在编码下按其在完整性正则分割成数组,再根据需要取截取长度;


1、实现方法函数


开启mbstring扩展,然后自定义函数:


    <?php
    header('content-Type:text/html:charset=utf-8');
    function substr_chinese($str, $start, $length = null) {
    return join("",
    array_slice(
    preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $start, $length)
    );
    }
    //实例
    $str = "中国地图全图";
    echo substr_utf8($str, 0, 4);
    //输出: 中国地图
    ?>



2、主要函数功能说明preg_split:
对于初学者来说,大家对 说明 array preg_split ( string $pattern, string $subject [, int $limit [, int $flags]] )
返回一个数组,包含 subject 中沿着与 pattern 匹配的边界所分割的子串。
如果指定了 limit,则最多返回 limit 个子串,如果 limit 是 -1,则意味着没有限制,可以用来继续指定可选参数 flags。
flags 可以是下列标记的任意组合(用按位或运算符 | 组合):
PREG_SPLIT_NO_EMPTY
如果设定了本标记,则 preg_split() 只返回非空的成分。
PREG_SPLIT_DELIM_CAPTURE
如果设定了本标记,定界符模式中的括号表达式也会被捕获并返回。本标记添加于 PHP 4.0.5。
PREG_SPLIT_OFFSET_CAPTURE

如果设定了本标记,如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其在 subject 中的偏移量。本标记自 PHP 4.3.0 起可用。


提示
如果不需要正则表达式的功能,可以选择使用更快(也更简单)的替代函数如 explode() 或 str_split()。


3、array_slice说明:
array_slice() 函数在数组中根据条件取出一段值,并返回。


    <?php
    $a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
    print_r(array_slice($a,1,2));
    ?>
    输出:Array ( [0] => Cat [1] => Horse )


本文讲述了PHP 怎样写代码才能只取出中文的字符串,希望本文能给腻带来灵感,帮助你解决疑问,感谢阅读本文。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-7-8 05:52:54
球球你 发表于 2018-7-8 02:17
请问就是怎样写代码才能只取出中文的字符串?
利用Excel中的左提取函数LEFT
其中的最后一个参数是字符串函数减去7<br>
就解决了!!<br>
没必要太麻烦!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-7-8 07:57:33
泪眼迷蒙 发表于 2018-7-8 05:52
利用Excel中的左提取函数LEFT
其中的最后一个参数是字符串函数减去7
就解决了!!
不行啊,要用R语言写
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-7-8 07:59:00
凯旋の王者 发表于 2018-7-8 02:38
解决思路:把汉字按一个汉字在编码下按其在完整性正则分割成数组,再根据需要取截取长度;
用代码怎么写?R语言
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-7-8 11:29:49
如果方括弧内的长度是固定的话,试试这个:
复制代码

如果方括弧内的长度不固定,建议用strsplit,注意要先把因子转化为character类型。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群