PHP $ _REQUEST как массив - PullRequest
       12

PHP $ _REQUEST как массив

2 голосов
/ 09 октября 2009

У меня есть поисковая форма, я хочу $ _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>

Обновление: спасибо, ребята, за ответы. Я использую взорваться, это кажется довольно простым. Плюс название звучит круто ^^

Ответы [ 7 ]

5 голосов
/ 09 октября 2009

В форме:

<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>
<? } ?>
3 голосов
/ 09 октября 2009

Если вы хотите, чтобы пользователь вводил несколько поисковых терминов в отдельных элементах управления вводом, приведенные выше ответы должны быть полезны Однако ваша примерная форма заставляет задуматься, хотите ли вы использовать только одно текстовое поле для ввода поисковой фразы. Если это так, это может быть то, что вы ищете:

<?php
  $searchTerms = preg_split("/[\s,]+/", $_REQUEST['SearchTerms']);

   foreach($searchTerms as $term) { ?>
     <span class="term"><?= htmlentities($term) ?></span>
<? 
   }
?>
2 голосов
/ 12 мая 2013

Я так и сделал ..

Передача массива (это действительно просто строка в PHP):

http://www.somesite.net/myscript.php?myArray=Planes,Trains,Automobiles

Затем в сценарии просто взорвите строку:

$ myArray = explode (",", $ _REQUEST ['myArray']);

Может быть, не совсем то, что вы ищете.

1 голос
/ 09 октября 2009

Если вы хотите разбить условия поиска по пробелам, просто попробуйте этот код:

<?php
   $search_terms = explode(" ", $_REQUEST['s']);
   foreach($search_terms AS $search_term_item) {
     echo "<span class=\"SearchTerm\">".htmlspecialchars($search_term_item)."</span>";
   }
?>
1 голос
/ 09 октября 2009

Я полагаю, что вы хотите, чтобы у пользователя была одна запись, которую вы затем хотите разделить на массив отдельных поисковых терминов.

Разделите ваш ввод на пробельные символы (рассматривая последовательные пробельные символы как один), чтобы получить отдельные термины.

Например:

$termList = preg_split("/\s+/", trim($_REQUEST['s']));
foreach($termList as $term) { echo "<span>".htmlspecialchars($term)."</span>\n"; }

Конечно, не забывайте правильно фильтровать и экранировать вход, прежде чем использовать его.

0 голосов
/ 09 октября 2009

Подробнее о передаче результатов формы в виде массива: http://us.php.net/manual/en/faq.html.php#faq.html.arrays

0 голосов
/ 09 октября 2009

В вашем HTML-элементе формы вы можете присвоить имя массиву, например так:

<select id="MySelect" multiple="multiple" name="SearchTerms[]" class="MyClass">
    ...
</select>

тогда, когда вы имеете дело с формой после отправки, вы можете сделать что-то вроде:

<?php
    foreach($_REQUEST['SearchTerms'] as $SearchTerm)
    {
        Print("<span class=\"SearchTerm\">$SearchTerm</span>");
    }
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...