0

私は次の文字列を持っています:

Some random 516 text100.
text3.

プログラムで次のようなものを取得するにはどうすればよいですか。

$a[0]["text"] = Some random 516 text
$a[0]["id"] = 100

$a[1]["text"] = text
$a[1]["id"] = 3

ありがとう

4

2 に答える 2

3

これは動作します:

$input = array("Some random 516 text100.",
        "text3.");

$output=array();

foreach ($input as $text) {
    preg_match('/(.*?)(\d+)\./',$text,$match);
    array_shift($match); // removes first element
    array_push($output,$match);
}

print_r($output);

出力:

Array
(
    [0] => Array
        (
            [0] => Some random 516 text
            [1] => 100
        )

    [1] => Array
        (
            [0] => text
            [1] => 3
        )

)
于 2012-08-25T18:39:29.783 に答える
2

入力がこの正規表現である場合は、正規表現を使用できます。

注:このバージョンでは.、パーツの下にアンダーtext<number>が必要です。入力によっては、これを微調整する必要がある場合があります。

$in='Some random 516 text100.
text3.';

preg_match_all('/^(?<text>.*?text)(?<id>\d+)\./im', $in, $m);
$out = array();
foreach ($m['id'] as $i => $id) {
    $out[] = array('id' => $id, 'text' => $m['text'][$i]);
}
var_export($out);

foreachは、結果を要求された形式にマッサージします。元の形式で返されるものを使用できる場合は、それは必要ない場合がありますpreg_match_all()

于 2012-08-25T18:32:26.010 に答える