获取文字和数字

时间:2012-08-25 18:22:43

标签: php regex

我有以下字符串:

Some random 516 text100.
text3.

我怎么能以编程方式获得如下内容:

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

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

由于

2 个答案:

答案 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()返回,则可能不需要。

相关问题