私は次の文字列を持っています:
Some random 516 text100.
text3.
プログラムで次のようなものを取得するにはどうすればよいですか。
$a[0]["text"] = Some random 516 text
$a[0]["id"] = 100
$a[1]["text"] = text
$a[1]["id"] = 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
)
)
入力がこの正規表現である場合は、正規表現を使用できます。
注:このバージョンでは.
、パーツの下にアンダー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()
。