1

私はこれを一日中理解しようとしていますが、次の行を次の順序で確実に分割するにはどうすればよいですか。

パッシブ:近くの味方から孤立している敵をマークします。アクティブ:70/100/130/160/190(+)の物理ダメージを与えます。ターゲットが孤立している場合、量は100/145/190/235/280(+)に増加します。Evolved Enlarged Claws:孤立した敵へのダメージを失われた体力の12/12/12/12/12%増加させます(モンスターに対して最大200/200/200/200/200)。TastetheirFearとKha'Zixの基本攻撃の範囲を50/50/50/50/50増やします。

Array
(
    [0] =>  Array
        (
            [0] => Passive
            [1] => Marks enemies who are isolated from nearby allies.
        )
    [1] =>  Array
        (
            [0] => Active
            [1] => Deals 70/100/130/160/190 (+) physical damage. If the target is isolated, the amount is increased to 100/145/190/235/280 (+).
        )
    [2] =>  Array
        (
            [0] => Evolved Enlarged Claws   
            [1] => Increases damage to isolated enemies by 12/12/12/12/12% of their missing health (max 200/200/200/200/200 vs. monsters). Increases the range of Taste Their Fear and Kha'Zix's basic attacks by 50/50/50/50/50.
        )
)

文中期を過ぎて行けません。

4

3 に答える 3

2
(?:^|\s*)([^.:]+):\s*(.+?\.)(?=[\w\s]+:|$)

名前はキャプチャグループ1にあり、説明はキャプチャグループ2にあります

于 2012-09-27T16:19:48.723 に答える
1

うーん、これはうまくいくようです...

preg_match_all('/(?<=^|[.] )([^:]+): (.+?[.])(?=[^.]+:|$)/', $text, $matches, PREG_SET_ORDER);
var_dump($matches);

...与えられた構造を理解していれば('Term: Description. Term: Description'、など)。それを壊す可能性があるのは、実際には Description 内のコロンです。ドットはここでうまくいきます。

この一致の結果は、非常に簡単に連想配列に変換できます。

$spell = array();
foreach ($matches as $match) {
   $spell[$match[1]] = $match[2];
}
于 2012-09-27T16:04:39.290 に答える
0

.親/メイン配列と:サブ配列の区切り記号として使用します。

function so12625378_explode_to_multiarray( $string )
{
    foreach ( explode( ". ", $your_string ) as $part )
        $result[] = explode( ": ", $part );

    return $result;
}

使用する:

 $string = 'Passive: Marks enemies who are isolated from nearby allies. Active: Deals 70/100/130/160/190 (+) physical damage. If the target is isolated, the amount is increased to 100/145/190/235/280 (+).';
 echo '<pre>'.var_export( so12625378_explode_to_multiarray( $string ), true ).'</pre>';
于 2012-09-27T16:12:39.353 に答える