У меня есть форма поиска, я хочу $ _REQUEST условия поиска как массив, поэтому я могу перечислить каждый поисковый запрос, обертывая каждый термин в промежутке для стилизации. Как мне это сделать?
Изменить: Вот код, который требуется.
<form action="http://localhost/wordpress" id="search" method="get"> <input type="text" size="30" id="s" name="s" value="Type and hit enter" onfocus="javascript:this.value='';" onblur="javascript:this.value='Type and hit enter';"/> <br/> <input type="submit" value="Search"/> </form>
Обновление: Спасибо, ребята, за ответы. Я буду использовать взрыв, это выглядит довольно просто. Плюс название звучит круто ^^
В виде:
<input type="text" name="terms[]" /> <input type="text" name="terms[]" /> <input type="text" name="terms[]" />
В процессоре формы:
<? foreach($_REQUEST['terms'] as $term) { ?> <span style="searchterm"><?= htmlspecialchars($term) ?></span> <? } ?>
Я полагаю, вы хотите, чтобы пользователь имел один входной вход, который затем вы хотите разбить на массив отдельных поисковых терминов.
Разделите свой ввод на пробелы (обрабатывая последовательные символы пробелов как единое целое), чтобы получить отдельные термины.
Например :
$termList = preg_split("/\s+/", trim($_REQUEST['s'])); foreach($termList as $term) { echo "<span>".htmlspecialchars($term)."</span>\n"; }
Конечно, не забудьте правильно фильтровать и уйти от ввода, прежде чем использовать его.
Если вы хотите, чтобы пользователь вводил несколько условий поиска в отдельных элементах управления вводом, приведенные выше ответы должны быть полезными. Однако ваша примерная форма приводит меня к удивлению, хотите ли вы использовать только одно текстовое поле ввода фразы. Если это так, это может быть то, что вы ищете:
<?php $searchTerms = preg_split("/[\s,]+/", $_REQUEST['SearchTerms']); foreach($searchTerms as $term) { ?> <span class="term"><?= htmlentities($term) ?></span> <? } ?>
Если вы хотите нарушить условия поиска по пробелам, просто попробуйте этот код:
<?php $search_terms = explode(" ", $_REQUEST['s']); foreach($search_terms AS $search_term_item) { echo "<span class=\"SearchTerm\">".htmlspecialchars($search_term_item)."</span>"; } ?>
Я сделал это так.
Передача массива (это действительно просто строка для PHP):
http://www.somesite.net/myscript.php?myArray=Planes,Trains,Automobiles
Затем в скрипте просто взорвите строку:
$ myArray = explode (",", $ _REQUEST ['myArray']);
Возможно, не совсем то, что вы ищете.
В элементе формы HTML вы можете назначить имя массиву, например:
<select id="MySelect" multiple="multiple" name="SearchTerms[]" class="MyClass"> ... </select>
то, когда вы имеете дело с формой после отправки, вы можете сделать что-то вроде:
<?php foreach($_REQUEST['SearchTerms'] as $SearchTerm) { Print("<span class=\"SearchTerm\">$SearchTerm</span>"); } ?>
Вот более подробная информация о передаче результатов формы в виде массива: http://us.php.net/manual/en/faq.html.php#faq.html.arrays