PHP如何获取字符串中第一次出现中文字符的位置?

例如:字符串 $a="abcd12中456文"
问题1:如何获取到“中”字的位置。
问题2:如何获取“中456”这几个字
字符串中的中文字,不是固定不变的,所以要求不能以“中”字的位置去判断

$a='abcd12中456文';

// 获取到“中”字的位置
preg_match('/中/',$a,$matches,PREG_OFFSET_CAPTURE);
print_r($matches[0][1]);
echo "\n";

// 获取“中456”这几个字 (注意只支持utf8编码 其他编码请转utf8再匹配)
preg_match('/[\x{4e00}-\x{9fa5}]\d{3}(?=[\x{4e00}-\x{9fa5}])/u',$a,$matches);
print_r($matches[0]);

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-30
$str = "abcd12中456文";
$findLen = strlen($str);
$tmp = stripos($str,"中");
$j=substr($str,$tmp,6);
echo '获取到“中”字的位置:'.$tmp.'<br>获取字符串:'.$j;

第2个回答  2016-01-15
$str="433国RRR张55";
$n=mb_strpos($str,'张');
echo $n;
第一次出现指定字符的位置。
第3个回答  2018-04-02
$str='asdfa2342asdf阿发34勾搭';
preg_match('/([\x{4e00}-\x{9fa5}]+)/u',$str,$matches,PREG_OFFSET_CAPTURE);
dump($matches[0][1]);//第一个中文出现的位置

相似回答