大哥再请教下,php截取一段字符串中第一个出现的字母或中文冒号前面的字符串的语句怎么写?

一段字符串里中文和字母数字以及全角冒号混排,想截取第一个数字或字母或全角冒号前的中文字符,如$str="登山服:pro520"; php语句应该怎么写?你上次写的只有数字和字母的正则,加个全角冒号的话正则应该怎么写呢?
$preg = '/^([^a-z0-9]*)/i';
preg_match($preg, $str, $matchs);
echo $matchs[0];
我自己也写了个可以截取全角冒号的正则,$preg = '/^([^a-z0-9\:]*)/i'; 但是这个正则遇到第一个字的拼音是he的中文的字符串就会出错,截取不到任何中文字符,比如

$str="合金争霸";
$preg = '/^([^a-z0-9\:]*)/i';
preg_match($preg, $str, $matchs);
echo $matchs[0];
上面这个语句截取不到任何字符串,如果把“合金争霸”这四个字换成“黄金争霸”就可以正常截取,请问这是什么原因啊?

第1个回答  2013-11-05
<?php
$string = "我是PHP程序员:ssbbcc";
$ff = explode(":",$string);
echo '<pre>';
print_r($ff);
echo '</pre>';
~追问

关键是我$string的字符串是混排的,冒号可能会在字母后面,比如:$string = "我是PHP程序员ss:bbcc";

追答

把上边的两个回答结合起来呀。先用正则匹配,然后使用explode分隔全角冒号

相似回答