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 回答