2013-09-24 85 views
0

我已經從在下面的例子一數據庫中提取的字符串。我試圖通過字符串循環到HTML表格中以顯示結果,如圖所示。字符串的長度可能會有所不同,但會始終遵循相同的格式。字符串分割到數組然後循環到HTML表格

$string = "18/05-01/06 01/06-06/07 06/07-22/08 22/08-14/09 DR Record + 2 21.47 20.24 27.15 20.24 BE Record + 2 24.05 22.68" 

_______________________________________________________________________ 
       |18/05-01/06 | 01/06-06/07 | 06/07-22/08 | 22/08-14/09 | 
_______________________________________________________________________ 
DR Record + 2 | 21.47  | 20.24  | 27.15  | 20.24  | 
_______________________________________________________________________ 
BE Record + 2 | 24.05  | 22.68  |    |    | 
_______________________________________________________________________ 

我試過的一切似乎都不起作用。任何想法將不勝感激。

這是我到目前爲止已經試過

$string = "18/05-01/06 01/06-06/07 06/07-22/08 22/08-14/09 DR Record + 2 21.47 20.24 27.15 20.24 BE Record + 2 24.05 22.68" 

$parts = preg_split('/\s+/', $string); 

$date = array(); 
$record = array(); 
$price = array(); 

foreach($parts as $part) { 
    // check date 
    if(strpos($part,'-') !== false) { 
     $date[] = $part; 
    } 
    // check price 
    elseif(strpos($part, '+') !== false) { 
     $record[] = $part; 
    } 
    // echeck record 
    elseif(strpos($part, '.') !== false) { 
     $price[] = $part; 
    } 
} 
+0

而且你的做法是......? –

+0

請顯示您嘗試過的一些代碼。另外,你是否可以控制從數據庫中提取的字符串?對於列和行有不同的分隔符會很好。 –

+0

@AlmaDoMundo我已經更新了我的答案和我的最新嘗試失敗 – StevenPHP

回答

1
$parts = preg_split('/\s+/', $string); //it returns an array 
+0

感謝shuvo。我試過,但在需要事後 – StevenPHP

0
<?php 
function gsb($string, $start, $end) 
{ 
    $string = " " . $string; 
    $ini = strpos($string, $start); 
    if ($ini == 0) 
     return ""; 
    $ini += strlen($start); 
    $len = strpos($string, $end, $ini) - $ini; 
    return substr($string, $ini, $len); 
} 
$s= "18/05-01/06 01/06-06/07 06/07-22/08 22/08-14/09 DR Record + 2 21.47 20.24 27.15 20.24 BE Record + 2 24.05 22.68"; 
$s1=explode(" ",gsb("*".$s,"*"," DR"));//'*' is just used to add an char at first so that we can extract string between it. 
$dr=explode(" ",gsb($s," DR Record "," BE Record")); 
$be=explode(" ",gsb($s.'*',$dr[count($dr)-2].' '.$dr[count($dr)-1].' ',"*"));//Edited according to comment and you need to access values from $be[2] as $be[0]$$be[1] will contain those two words. 
?> 

現在你有3個數組$s1$dr & $be包含表中的所有值,你現在需要根據只是用它你的需求。

+0

感謝我很難約束他們,唯一的問題是,'BE Record'可以是任意兩個字母不只是'BE' – StevenPHP

+0

根據您的評論 – 2013-09-24 18:36:28

+0

編輯我的回答您需要使用兩個數組元素$ dr [0]&$ dr [1]獲得+2 – 2013-09-24 18:41:13