Dizi olarak $ _REQUEST

6 Cevap php

Ben stil için bir zaman dilimi içinde her dönem sarma, her arama terimi dışarı listeleyebilirsiniz yüzden $ _REQUEST bir dizi olarak arama terimleri istiyorum, bir arama formu var. Bunu nasıl yapabilirim?

Düzenleme: Burada istenen kod.

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

Güncelle: yanıt için teşekkürler çocuklar. Ben patlayabilir kullanacağız, bu oldukça basit görünüyor. Artı adı ^ ^ serin geliyor

6 Cevap

Formunda:

<input type="text" name="terms[]" />
<input type="text" name="terms[]" />
<input type="text" name="terms[]" />

Form işlemci:

<? foreach($_REQUEST['terms'] as $term) { ?>
    <span style="searchterm"><?= htmlspecialchars($term) ?></span>
<? } ?>

Ben size daha sonra ayrı arama terimlerinin bir diziye bölmek isteyen tek giriş girişi için kullanıcı isteyen rakam.

Ayrı terimler türetmek için (biri olarak ardışık boşluk karakterleri tedavisi) boşluklarla girişinizi bölünmüş.

Örneğin:

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

Düzgün filtre ve bunu kullanmadan önce giriş kaçmak için tabii unutmayın.

Ayrı giriş kontrollerinde birden fazla arama terimleri girin kullanıcıyı istiyorsanız, yukarıdaki cevaplar yardımcı olmalıdır. Ancak, örnek form yalnızca tek bir arama ifade giriş metin kutusuna kullanmak istiyorsanız merak beni neden olur. Eğer öyleyse, bu sizin için ne arıyorsanız olabilir:

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

   foreach($searchTerms as $term) { ?>
     <span class="term"><?= htmlentities($term) ?></span>
<? 
   }
?>

Uzay sembollerle arama terimlerinizi kırmak istiyorsanız, sadece bu kodu deneyin:

<?php
   $search_terms = explode(" ", $_REQUEST['s']);
   foreach($search_terms AS $search_term_item) {
     echo "<span class=\"SearchTerm\">".htmlspecialchars($search_term_item)."</span>";
   }
?>

Ben bu şekilde yaptım ..

Dizisi geçirerek (gerçekten PHP için sadece bir dize var):

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

Sonra komut, sadece dize patlayabilir:

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

Aradığınız Belki tam olarak ne.

HTML form elemanının böyle bir diziye adını atayabilirsiniz:

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

Eğer submittion sonra formu ile anlaşma o zaman gibi bir şey yapabilirsiniz:

<?php
    foreach($_REQUEST['SearchTerms'] as $SearchTerm)
    {
        Print("<span class=\"SearchTerm\">$SearchTerm</span>");
    }
?>