php更改url的数组格式

时间:2011-05-25 08:38:14

标签: php html arrays format

我正在做一个奇怪的项目。我是php的新手,所以到目前为止一直是一场斗争。

我有一个表单,它提供一个数组并发布它:

...
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

最终希望能够将它附加到像ask.com搜索这样的网址的末尾:

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

然后导航

理论上,就像我在搜索栏中键入“(一,二,三,四,五,六)”并按下回车键。

希望这有点道理。

7 个答案:

答案 0 :(得分:7)

这样的事情:

$commaSeparated = implode(',', $array);
$withParens = '(' + $commaSeparated + ')';
$urlEncoded = urlencode($withParens);
print $urlEncoded;

答案 1 :(得分: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将是您需要的

答案 2 :(得分:2)

$keywordlist = explode("\r\n", $keywordlist);    
array_walk($keywordlist, 'strtolower');
$keywords = '('.implode(",", $keywordList).')';

答案 3 :(得分:2)

print_r就像这样打印你的数组。

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

如何解决这个问题取决于一些事情。 mixer()做了什么?关键字总是小写的吗?如果混音器没有做太多而且关键字是小写的,你可以做类似的事情:

  

$ string ='%28'。爆( '%2C',   $ keyword)。 '%29';

如果是URL编码,则可以使用函数url_encode而不是手动添加上述编码值。

答案 4 :(得分: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

答案 5 :(得分:2)

这样的东西?

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

答案 6 :(得分:1)

您可以使用urlencode对数组的每个部分进行编码,然后手动将其放入您的网址(自己制作网址字符串)。 http://php.net/manual/en/function.urlencode.php

或者您可以改为使用此功能:http://php.net/manual/en/function.http-build-query.php