#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