我有一根弦,开头可能有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')
答案 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
)
)