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

时间:2015-08-11 07:08:13

标签: php arrays split

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

   [0] => IS-001 開花した才能「篠ノ之 箒」

由此,我想只提取IS-001部分并将日文字符留在这样的内容

    [0] => 開花した才能「篠ノ之 箒」

普通preg_split我目前只使用白色空间,但似乎在箒“字符上有一些问题落入下一个数组。所以我决定是否只能将那些非日语字符分开?

3 个答案:

答案 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];