从字符串中分割数字和拉丁字母



目前我有一个像这样的数组

   [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];

最新更新