2014-09-21 81 views
1

我得到了一個字符串,可能在開頭處有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') 

回答

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

您可以使用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 
     ) 

) 
相關問題