2015-12-19 21 views
-3

添加信息,我有這個字符串重寫PHP中的字符串內

[ 1, 6], [ 2, 5] 

所有我需要的是重寫它來尋找像

['lat' => 1, 'long' => 6],['lat' => 2, 'long' => 5] 

所以meaby的邏輯應該是每1日前數字應該加'拉特'=>和每第二個數字'長'=>之前,但我不知道。 我使用PHP,但如果我有邏輯代碼,使用任何其他語言都不會有問題。 Thatk你

回答

0
<?php 
function transform($str) { 
    $str = str_replace('], ', '@', $str); 
    $str = str_replace('[', "['lat' =>", $str); 
    $str = str_replace(',', ", 'long' =>", $str); 
    $str = str_replace('@', '],', $str); 

    return $str; 
} 
$in = '[ 1, 6], [ 2, 5]'; 
$out = "['lat' => 1, 'long' => 6],['lat' => 2, 'long' => 5]"; 
print assert($out == transform($in)); 
0

的替代正則表達式是正常的字符串函數:

<?php 
$input = '[ 1, 6], [ 2, 5]'; 
list($latA, $longA, $latB, $longB) = sscanf($input, '[ %d, %d], [ %d, %d]'); 
$output = sprintf(
    "['lat' => %d, 'long' => %d],['lat' => %d, 'long' => %d]", 
    $latA, $longA, $latB, $longB 
); 
var_dump($output); 

輸出是:

string(51) "['lat' => 1, 'long' => 6],['lat' => 2, 'long' => 5]" 

但是我懷疑,這真的你在找什麼。這兩種格式看起來更像是它們實際上不是字符串,而是一個數組,其中包含兩個數值數組,每個數組包含兩個元素,每個元素作爲輸入,一個關聯數組作爲輸出如果是這樣,那麼答案會更簡單:-)