我有以下字符串:
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()
原始返回的格式,则可能不需要它。