2014-09-02 81 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