检查字符串中是否有字符串并将其解压缩

时间:2014-09-21 07:19:09

标签: php regex

我有一根弦,开头可能有1-3颗星。我想检查是否有星星,如果是这种情况,我需要将它们提取为整数。

* Lorem ipsum
** Lorem ipsum
*** Lorem ipsum
Lorem ipsum

结果:

array(1, 'Lorem ipsum')
array(2, 'Lorem ipsum')
array(3, 'Lorem ipsum')
array(0, 'Lorem ipsum')

2 个答案:

答案 0 :(得分:1)

您可以使用:

$s = '*** Lorem ipsum';

if (preg_match('/^(\**) *(.+)$/', $s, $m)) {
    $out = array(strlen($m[1]), $m[2]);
    print_r($out);
}

<强>输出:

array(
  0 => 3,
  1 => "Lorem ipsum",
)

答案 1 :(得分:1)

您可以使用preg_match_all()

$text = <<<TEXT
* Lorem ipsum
** Lorem ipsum
*** Lorem ipsum
Lorem ipsum
TEXT;

preg_match_all('/^(\**)\s*(.*)$/m', $text, $matches);
list(, $keys, $values) = $matches;

for ($i=0; $i < count($keys); $i++) 
    $result[] = [strlen($keys[$i]), $values[$i]];

var_export($result);

输出:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => Lorem ipsum
        )

    [1] => Array
        (
            [0] => 2
            [1] => Lorem ipsum
        )

    [2] => Array
        (
            [0] => 3
            [1] => Lorem ipsum
        )

    [3] => Array
        (
            [0] => 0
            [1] => Lorem ipsum
        )

)