2014-09-02 82 views
0

我有一個不可分割的大String數組,它看起來有點像這樣一個特定的字符串:PHP獲取隨機值

VALUES(1,1,1,0,1,"TEst",0,"NAME","URL.de","RANDOM CRYPRIC STUFF 34","­RANDOM CRYPRIC STUFF34 ","test",1,2) 
VALUES(1,1,1,0,1,"TEst",0,"NAME","URL.de","RANDOM CRYPRIC STUFF 34","­RANDOM CRYPRIC STUFF34 ","test",1,2) 
VALUES(1,1,1,0,1,"TEst",0,"NAME","URL.de","RANDOM CRYPRIC STUFF 34","­RANDOM CRYPRIC STUFF34 ","test",1,2) 

值都不同勢和我的PHP代碼看起來像這樣得到的各個值:

$backupdat = fopen("text.txt","r"); 
while(!feof($backupdat)) 
    { 
    $found1.= strchr(fgets($backupdat,1024),"VALUES"); 
    } 
fclose($backupdat); 


$whatIWant = explode("VALUES(",$found1); 

$User= explode(",",$whatIWant[1]); 
enter code here 
echo $User[10]."--";  
echo $User[11]."--"; 

現在我可以通過改變陣列 「WhatIWant [X]」 和$用戶[X]瀏覽與價值觀所有的東西。

事情是「隨機神祕材料可以是所有的字符包括,」和newRow。 所以我的爆炸方法得到錯誤的輸入。

我現在正在尋找其他方式來獲得我的價值觀,唯一修復長度的就是長34字的Crypric材料。

+0

必須將數據保存爲格式嗎?或者你可以使用傳統的序列化方法 – Steve 2014-09-02 10:59:15

+0

一種選擇是像你一樣爆炸,直到URL.de部分,然後數34個字符過去,得到隨機「crypric」的東西,然後爆炸其餘的你是 – 2014-09-02 10:59:42

+0

@ user574632什麼做你的意思是數據?我的兩個數組或數據我想分裂成碎片?數據值(....)是修復我不能改變,我用這兩個數組得到每個單獨的值的快速方法 – GEnGEr 2014-09-02 11:04:52

回答

1

我想有沒有聰明的方法來做到這一點。你可以建立你自己的解析功能,如下所示:

$mystring = 'VALUES(1,1,1,0,1,"TEst",0,"NAME","URL.de","abcdefghijklmnopqrstuvwxyzabcdefgh","abcdefghijklmnopqrstuvwxyzabcdefgh","test",1,2)'; 

$stripped = substr($mystring, 7, strlen($mystring)-8); 

function parsecol($string, &$index) { 
    $val = ''; 
    if ($string[$index] == '"') { 
    $limit = '"'; 
    $index++; 
    } else { 
    $limit = ','; 
    } 
    while (isset($string[$index]) && $string[$index] != $limit) { 
    $val .= $string[$index]; 
    $index++; 
    } 
    if ($limit == '"') { 
    $index++; 
    } 
    $index++; 
    return $val; 
} 


$user = array(); 
$index = 0; 
// parse first 9 columns 
for ($i=0; $i<9; $i++){ 
    $user[] = parsecol($stripped, $index); 
    var_dump($user); 
} 
// get the cryptic strings 
$user[] = substr($stripped, $index+1, 34); 
var_dump($user); 
$index += 37; // pass 34 chars from crypt, 2 " and , 
$user[] = substr($stripped, $index+1, 34); 
$index += 37; 
for ($i=0; $i<3; $i++){ 
    $user[] = parsecol($stripped, $index); 
} 

var_dump($user); 
+0

工程就像一個魅力,最後一個問題是它不容易得到$ mystring,因爲兩件事情1. VALUES(是在Text.txt中的某處以及2.在整個系列中都沒有被神祕的東西所切斷。 – GEnGEr 2014-09-02 13:05:03