目前我有一个像这样的数组
[0] => IS-001 開花した才能「篠ノ之 箒」
从中,我想只提取IS-001部分,并将日文字符保留为如下内容
[0] => 開花した才能「篠ノ之 箒」
Normal preg_split我目前只使用空白,但似乎有一些问题上的字符落到下一个数组。所以我决定是否可以将这些非日文字符分离出来?
试试这个
echo preg_replace('/^[a-zA-Z0-9-_]+/u','','IS-001 開花した才能「篠ノ之 箒」');
-
^
断言字符串开始位置 -
[a-zA-Z0-9-_]
匹配列表 中的单个字符 -
+
在一次到无限次之间,尽可能多的次数,根据需要回馈 -
u modifier
unicode:模式字符串被视为UTF-16。
解决这个问题的方法是使用多字节字符串函数。
所以$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;
如果你的字符串在所有情况下都是相同的,你可以使用爆炸和限制参数:
$string = 'IS-001 開花した才能「篠ノ之 箒」';
$array = explode(' ', $string, 2);
echo $array[1];