2016-10-12 13 views
0

私の解決策は簡単だと思いますが、それは私を逃れるようです。私は基本的なWebページを持っています。ここで、ユーザーは状態の先頭文字列を入力し、検索をヒットし、その文字列で始まるすべての状態を出力します。PHP州の配列から始めの値を検索する

たとえば、「co」が入力された場合は、コロラド州とコネチカット州が表示され、可能であれば入力ケースは区別されません。このinpt文字列は任意の長さでなければなりません。私は$州の配列を使用して、検索する必要のある50の州をすべて保持しています。以下は、基本的なフォームの外観です。

<h1>Search States</h1> 
<form method = "post" action = "states.php"> 
<p>Search: 

<input type="text" name="search"></p> 
<p><input type = "submit" value = "Submit"></p> 
</form> 

    <?php 

$states = array('Alabama', 
'Alaska', 
'Arizona', 
'Arkansas', 
'California', 
'Colorado', 
'Connecticut', etc, etc. 

私は正規表現検索のいくつかの種類は、私が探しています何ですが、私は入力のオフとの時間に複数の文字を使用してベースの1を生産する方法を見つけることができないと仮定しました。

ありがとうございました!

+0

[SQLデータベースからベースのオートコンプリートテキストボックスの結果]の可能な重複(http://stackoverflow.com/questions/21298169/autocomplete-textbox-results- based-from-sql-database) – Spade

答えて

0

単にstrpos === 0を使用します。

$matches = []; 

foreach ($states as $state) { 
    if (strpos($state, $_POST['search']) === 0) { 
     $matches[] = $state; 
    } 
} 

それはあなたがユーザーにこの情報を出力しようとしているどのように依存します。アヤックス、ページ更新...

+0

パーフェクト、ありがとう! – Ganon

+0

_case insensitive_だから 'stripos()'。 – AbraCadaver

1

使用この

$arr = array(); 
$search_str = 'Co'; 
foreach($states as $key => $value){ 
    $strlen = strlen($search_str); 
    if(strtolower(substr($value, 0, $strlen)) == strtolower($search_str)){ 
     $arr[] = $value; 
    } 
} 
print_r($arr); 
+1

"これを使用する"と次の行のコードを書くことは役に立ちません。コードを貼り付けるだけではなく、読者が新しいことを学ぶことができるように、あなたがしていることとその質問にどのように答えているかを簡単に説明する必要があります。 –

+1

この解決策も同様に機能します。ありがとうございます! – Ganon

関連する問題