0

流れる文字列をお願いします:

$str = 'blabla-blabla - 12345, blobl-ooo - 54123, hihihi - 98745'; 

配列blabla-blabla - 12345およびblobl-ooo - 54123およびhihihi - 98745を取得したい

そのために、REGEXPを使用することを考えているので、試しました:

preg_match_all("/\b[\p{L}'-]+|[a-z]+\b/u", $str, $all); 

ただし、これは文字列部分のみを取得し、数値は取得しません。

マスターにアドバイスをお願いします。

PS : 文字列の要素数がわからないため、リストと爆発を使用できません。

4

3 に答える 3

3

正規表現については、次を試してください。

preg_match_all('/([\w\-]+ \- \d+),?/u', $str, $all);

\wはすべての文字または数字を扱い、\dはすべての数字を扱います。

それ以外の場合は、文字列のサイズがわからない場合でも、explode を使用できます。

$parts = explode(', ', $str);
foreach($parts as $part) {
    // ...
}
于 2013-01-31T11:16:50.303 に答える
1

explodeカンマで分割するために使用できない理由がわかりません。そのために要素の数を知る必要はありません。ただし、このような正規表現は機能するはずです。

"/[\w\-]+ \- \d+/"
于 2013-01-31T11:17:26.197 に答える
0

preg_split関数を使用できます。

str = 'blabla-blabla - 12345, blobl-ooo - 54123, hihihi - 98745'; 
$result=preg_split('/,/',$str);
echo "<pre>";
print_r($result);

出力配列 ( [0] => blabla-blabla - 12345 1 => blobl-ooo - 54123 2 => hihihi - 98745 )

デモ

于 2013-01-31T11:32:27.197 に答える