2011-05-25 62 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