我有以下字符串:
Some random 516 text100.
text3.
我怎么能以编程方式获得如下内容:
$a[0]["text"] = Some random 516 text
$a[0]["id"] = 100
$a[1]["text"] = text
$a[1]["id"] = 3
由于
答案 0 :(得分: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
)
)
答案 1 :(得分: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()
返回,则可能不需要。