1

文字列の例を次に示します。

「12人からの60件のレビュー、ユーザーの20%」 ($ vと呼びましょう)

preg_match_allを使用して、すべての数値を含む配列を取得しています

$pattern = '!\d+!';
preg_match_all($pattern, $v, $matches, PREG_SET_ORDER); 

私が得る結果は次のとおりです。

Array
(
    [0] => Array
        (
            [0] => 60
        )
    [1] => Array
        (
            [0] => 12
        )
    [2] => Array
        (
            [0] => 20
        )
)

しかし、しばらくの間試みたにもかかわらず、私は欲しいものを手に入れることができませんでした。私が欲しいのはこれです:

Array
(
    [0] => 60
    [1] => 12
    [2] => 20
)

代わりにpreg_matchを使用する必要がありますか?しかし、preg_matchを使用すると、1つの値しか取得できません...またはループと一緒に?それは醜いハックのように見えます...そこに専門的な方法があるはずです...PHPの専門家に事前に感謝します!;)

4

2 に答える 2

0

これはあなたが望むものですか?、array_values($ array)

于 2012-12-08T03:20:09.217 に答える
0

フォーマットが常に同じであると仮定すると、次のことができます。

<?php

    // Input string/line
    $v = "60 reviews from 12 people, 20% of users";

    // Match regex (0-9; min 1 or max unlimited numbers)
    preg_match_all("/[0-9]{1,}/", $v, $matches);

    // Remove/sub key
    $matches = $matches[0];

    // Echo out
    print_r($matches);

?>

これは出力します:

 Array ( 
       [0] => 60     // < Access using $matches[0]
       [1] => 12     // < Access using $matches[1]
       [2] => 20     // < Access using $matches[2]
 )
于 2012-12-08T03:36:41.847 に答える