2014-02-09 64 views
0

我正在處理重定向應用程序的查詢字符串模式。我們可以在strstr中使用多個OR聲明。恩。如果我不知道它是否會& or & or $ or /那麼是否有可能使用其他跡象OR條件與$code= strstr($code, '/',+1);在URL中應用字符串處理後獲取特定值

說明:

的URL來參加我們的重定向程序是這樣

https://www.sample.com?key=1234~rety~1234~retu&c=12&k=12 
    OR 
    https://www.sample.com?key=1234~rety~1234~retu/c=12/k=12 
    OR 
    https://www.sample.com?key=1234~rety~1234~retu$c=12$k=12 

我們的目的唯一的變量是關鍵(其名稱可以改變,但數據會以同樣的模式出現),我想要的只是用〜模式獲取數據。

我做如下:

parse_str(parse_url($url, PHP_URL_QUERY), $parts); 
$keys = array_keys($parts); 
$size=sizeof($keys); 
$total=substr_count($uri, '~'); 
$var=$keys[0]; 
$value=$parts[$var]; 
for($i=0;$i<$size;$i++){ 
    $var=$keys[$i]; 
    $value=$parts[$var]; 
    $total=substr_count($value, '~'); 
    if($total==3){ 
     $digit_code = preg_split('/\~+/', $value); 
$digit_code = array_filter($digit_code); 
$digit_code = array_values($digit_code); 

$project_id=$digit_code[0]; 
$country_id=$digit_code[1]; 
$vendor=$digit_code[2]; 
$code=$digit_code[3]; 
//$code= strstr($code, '/',+1); 
    } 

但是當URL來了這樣

https://www.sample.com?key=1234~rety~1234~retu/c=12/k=12 
or 
https://www.sample.com?key=1234~rety~1234~retu$c=12$k=12 
+0

你讀過'strstr'手冊後一次? –

+0

是的,我已經閱讀了手冊。我正試圖找出一些解決方法 – Ethen

回答

0

這是使用正則表達式可以適用它不工作:

preg_match('/((?:\/|&|\$).*)/', $code, $matches); 
$code = $matches[1]; 

這將匹配一個/或&或$,接着是字符串的其餘部分。

http://au1.php.net/preg_match

0

你在PHP重定向指?或查詢字符串在數據庫中獲取數據?

你可以閱讀strstr手冊。

+0

請重新閱讀我已更新的問題 – Ethen

0

我找到了解決辦法:

我只是把

if (strpos($code,'/') !== false) { 
    $code= strstr($code, '/',+1); 
} 
    if (strpos($code,'$') !== false) { 
    $code= strstr($code, '$',+1); 
} 

for循環

相關問題