目前我有一个像这样的数组
[0] => IS-001 開花した才能「篠ノ之 箒」
由此,我想只提取IS-001部分并将日文字符留在这样的内容
[0] => 開花した才能「篠ノ之 箒」
普通preg_split我目前只使用白色空间,但似乎在箒“字符上有一些问题落入下一个数组。所以我决定是否只能将那些非日语字符分开?
答案 0 :(得分:7)
试试这个
echo preg_replace('/^[a-zA-Z0-9\-_]+/u','','IS-001 開花した才能「篠ノ之 箒」');
^
在字符串[a-zA-Z0-9\-_]
匹配列表中的单个字符+
在一次和无限次之间,尽可能多次,根据需要回馈u modifier
unicode:模式字符串被视为UTF-16。答案 1 :(得分:4)
解决方法是使用multibyte string functions。
因此$char = substr($str, $i, 1);
将变为$char = mb_substr($str, $i, 1, 'UTF-8');
而strlen($str)
将变为mb_strlen($str, 'UTF-8')
。
$str="IS-001 開花した才能「篠ノ之 箒」";
$japanese = preg_replace(array('/[^\p{Han}?]/u', '/(\s)+/'), array('', '$1'), $str);
echo $japanese;
(或)
从字符串中删除拉丁字母和数字
$res = preg_replace('/[a-zA-Z0-9-]+/', '', $str);
echo $res;
答案 2 :(得分:0)
如果您的字符串在所有情况下都相同,则可以使用explode with limit parameter:
$string = 'IS-001 開花した才能「篠ノ之 箒」';
$array = explode(' ', $string, 2);
echo $array[1];