3

いくつかの数字と文字を含む文字列を分割したいと思います。このような:

ABCd Abhe123
123ABCd Abhe
ABCd Abhe 123
123 ABCd Abhe

私はこれを試しました:

<?php preg_split('#(?<=\d)(?=[a-z])#i', "ABCd Abhe 123"); ?>

しかし、うまくいきません。たとえば、 「ABCd Abhe 123」
を含む配列内のセルは 1 つだけです。たとえば、セル 0: 数字とセル 1: 文字列:

[0] => "123",
[1] => "ABCd Abhe"

ご協力ありがとうございました!;)

4

2 に答える 2

2

preg_match_all代わりに使用

preg_match_all("/(\d+)*\s?([A-Za-z]+)*/", "ABCd Abhe 123" $match);

すべての試合で:

  • $match[i][0]一致したセグメントを含む
  • $match[i][1]数字を含む
  • $match[i][2]文字を含む

(正規表現テストについては、こちらを参照してください)

次に、それらを配列に入れます

for($i = 0; $i < count($match); $i++)
{
    if($match[i][1] != "")
        $numbers[] = $match[1];

    if($match[i][2] != "")
        $letters[] = $match[2];
}

編集1

正規表現を更新しました。空白の有無にかかわらず、数字または文字を検索するようになりました。


EDIT2

正規表現は正しいですが、配列の処理は正しくありません。を使用するpreg_match_allと、次$matchのような配列を含む配列になります。

Array
(
    [0] => Array
        (
            [0] => Abc
            [1] =>  aaa
            [2] => 25
        )

    [1] => Array
        (
            [0] => 
            [1] => 
            [2] => 25
        )

    [2] => Array
        (
            [0] => Abc
            [1] => aaa
            [2] => 
        )

)
于 2013-10-22T10:33:08.333 に答える