2

preg_split()コンマ、二重引用符、またはスペースで区切られたタグの文字列を取得しようとしています。

これは私がこれまでに持っているコードです。アイデアは、ユーザーが JavaScript ソリューションを使用せずにタグをできるだけ簡単に入力できるようにすることです (これについては後で説明します)。

$tagfield = 'Tag Tag2, Tag3 "Tag" "A Tag"';

$tags = preg_split('/[^(.)^a-zA-Z0-9]+/', $tagfield, NULL, PREG_SPLIT_NO_EMPTY);

私が得ている出力は次のとおりです。

array (
    0 => 'Tag',
    1 => 'Tag2',
    2 => 'Tag3',
    3 => 'Tag',
    4 => 'A',
    5 => 'Tag',
)

私の望ましい出力は次のようになります。

array (
    0 => 'Tag',
    1 => 'Tag2',
    2 => 'Tag3',
    3 => 'Tag',
    4 => 'A Tag',
)

2 語のタグを取得する方法がよくわかりません。

4

2 に答える 2

1

なぜ preg_match_all ではないのですか?

preg_match_all('/([a-zA-Z0-9]+)|(?:"([a-zA-Z0-9 ]+)")/i', 'Tag Tag2, Tag3 "Tag" "A Tag"', $result);

編集:

ソリューションのエレガントでない部分は受け入れますが、二重引用符は返されません。先ほど紹介したコードです。あなたが見つけたよりエレガントなものを貼り付けてください:)

<?php
preg_match_all('/([a-zA-Z0-9]+)|(?:"([a-zA-Z0-9 ]+)")/i', 'Tag Tag2, Tag3 "Tag" "A Tag"', $result);
$result=array_filter(array_map('array_filter', $result));
print_r(array_merge($result[1], $result[2]));
?>

出力:

Array
(
    [0] => Tag
    [1] => Tag2
    [2] => Tag3
    [3] => Tag
    [4] => A Tag
)
于 2011-12-28T04:50:18.670 に答える
0

preg /[^(.)^a-zA-Z0-9/s]+/ slash s にスペースを考慮してください

于 2011-12-28T04:25:07.337 に答える