php изменить формат массива для url

#php #html #arrays #format

#php #HTML #массивы #формат

Вопрос:

У меня есть странный проект, над которым я работаю. Я совершенно новичок в php, так что до сих пор это было непросто.

У меня есть форма, которая выдает массив и публикует его:

 ...
return($keywords);
}

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

Я получаю это:

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

Но хотелось бы, чтобы это выглядело так вместо:

 (one%2Ctwo%2Cthree%2Cfour%2Cfive%2Csix)
  

В конечном итоге надеюсь, что смогу прикрепить его к концу URL-адреса, например ask.com поиск:

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

затем перейдите туда

Теоретически это было бы так, как если бы я ввел «(один, два, три, четыре, пять, шесть)» в строку поиска и нажал ввод.

Надеюсь, это имеет какой-то смысл.

Комментарии:

1. и используйте urlencode функцию для кодирования специальных символов, таких как amp; , ? и других символов, которые будут использоваться внутри строк запроса.

Ответ №1:

Что-то вроде этого:

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

Ответ №2:

Используйте функцию php implode().

Итак, вы могли бы сделать это:

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

Теперь $string будет то, что вам нужно

Ответ №3:

Этот код:

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

Выдает этот результат:

Поисковый запрос: (один, два, три) В кодировке: (one,two,three)

Ответ №4:

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

Ответ №5:

print_r это то, что выводит ваш массив следующим образом.

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

Как это решить, зависит от нескольких вещей. Что mixer() делает? И всегда ли ключевые слова в нижнем регистре? Если микшер мало что делает, а ключевые слова написаны в нижнем регистре, вы могли бы сделать что-то вроде:

$string = ‘(‘ . implode(‘,’, ключевое слово $) . ‘)’;

Если вам нужна кодировка URL, вы могли бы использовать функцию url_encode вместо ручного добавления закодированных значений, как указано выше.

Ответ №6:

Что-то вроде этого?

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

Ответ №7:

Вы могли бы закодировать каждую часть массива с помощью urlencode, а затем вручную поместить ее в свой URL (создав строку URL самостоятельно). http://php.net/manual/en/function .urlencode.php

Или вы могли бы использовать эту функцию вместо этого: http://php.net/manual/en/function.http-build-query.php