2011-05-25 117 views
4

我有一個奇怪的項目,我正在努力。我完全不熟悉php,所以到目前爲止這是一場艱苦的鬥爭。php更改數組格式的url

我有一個表格,讓一個數組並將其發佈:

... 
return($keywords); 
} 

$keywordlist = explode("\r\n", $keywordlist); 
foreach($keywordlist as $keyword){ 
print_r(mixer(strtolower($keyword))); 
} 

我得到這個:

Array ([0] => one [1] => two [2] => three [3] => four [4] => five [5] => six [6] => .... 

但希望它出來是這樣,而不是:

%28one%2Ctwo%2Cthree%2Cfour%2Cfive%2Csix%29 

最終希望能夠將它附加到url的末尾,例如ask.com搜索:

"http://www.ask.com/web?q=(put my keywords here)" 

然後導航有

理論上它會像我輸入「(一,二,三,四,五,六)」在搜索欄中並壓入。

希望這是有道理的。

+0

使用implode()函數。 – Harsh 2011-05-25 08:44:04

+0

並使用['urlencode'](http://php.net/manual/en/function.urlencode.php)函數對特殊字符進行編碼,例如'&','?'和其他在查詢字符串中使用的字符。 – 2011-05-25 08:46:25

回答

2

此代碼:

$keywords = array('one', 'two', 'three'); 
$query = '(' . implode(',', $keywords) . ')'; 
echo('Search query: ' . $query . PHP_EOL); 
$query = rawurlencode($query); 
echo('Encoded: ' . $query . PHP_EOL); 

給出這個輸出:

搜索查詢:(一,二,三)編碼: %28one%2Ctwo%2Cthree%29

3

使用php implode()函數。

所以,你可以這樣做:

$array = new array ([0] => one [1] => two [2] => three [3] => four [4] => five [5] => six); 
$string = '%28'.implode('%2C', $array).'%29'; 

現在$string將是你所需要的

+0

+1好解釋 – Ibu 2011-05-25 08:43:30

7

事情是這樣的:

$commaSeparated = implode(',', $array); 
$withParens = '(' + $commaSeparated + ')'; 
$urlEncoded = urlencode($withParens); 
print $urlEncoded; 
2
$keywordlist = explode("\r\n", $keywordlist);  
array_walk($keywordlist, 'strtolower'); 
$keywords = '('.implode(",", $keywordList).')'; 
2

print_r就是打印您陣列這樣。

http://php.net/manual/en/function.print-r.php

如何解決這取決於幾件事情。 mixer()是做什麼的?並且關鍵字始終是小寫字母?如果混頻器沒有做太多,關鍵字是小寫字母,你可以做類似:

$ string ='%28'。 implode('%2C', $關鍵字)。 '%29';

如果是URL編碼,您可以使用函數url_encode而不是像上面那樣手動添加編碼值。

2

是這樣的嗎?

$input = array('one', 'two', 'three'); 
$s = implode(',', $input); 
$s = '('.$i.')'; 
print urlencode($s); 
+0

不是故意欺騙,只是打字太慢... – 2011-05-25 08:50:40