2012-07-12 30 views
0

我想用php從字符串中提取標籤和數據。該字符串看起來是這樣的:用PHP提取並解析一個大字符串

Label: Info; 
Label1: Info1; 
Label2: Info2; 
Label3: Info3; 
.............. 

我的解決方案是使用strpos每一個標籤,一個變量保留它並提取數據,該標籤是太慢了。你能提出另一種方法嗎?

+1

哪裏是你的代碼?我們不能說爲什麼它太慢。 – meze 2012-07-12 14:28:31

+0

您是否需要提取所有標籤及其數據,或者您只需要查找某些特定標籤? – SilverSnake 2012-07-12 14:29:41

+0

@SilverSnake爲某些特定標籤提取數據。 – 2012-07-12 14:31:17

回答

2

我當然不是REGEX的專家,但這是我提出的解決方案。

$ptn = "/(Label[0-9]?):?.?(.+);/"; 
$str = "Label: Info; 
Label1: Info1; 
Label2: Info2; 
Label3: Info3;"; 
preg_match_all($ptn, $str, $matches, PREG_SET_ORDER); 

現在使用print_r$matches返回如下:

Array 
(
    [0] => Array 
     (
      [0] => Label: Info; 
      [1] => Label 
      [2] => Info 
     ) 

    [1] => Array 
     (
      [0] => Label1: Info1; 
      [1] => Label1 
      [2] => Info1 
     ) 

    [2] => Array 
     (
      [0] => Label2: Info2; 
      [1] => Label2 
      [2] => Info2 
     ) 

    [3] => Array 
     (
      [0] => Label3: Info3; 
      [1] => Label3 
      [2] => Info3 
     ) 

)