0

連絡先情報を含むフォームがあります。それぞれにタイプがあり、次に連絡先情報自体があります。例えば:

Type    | Contact
-------------------------------
cell    | 555-555-5555
home    | 444-444-4444
email   | abc@def.com

ユーザーが jQuery を使用してフォームから連絡先を追加/削除できることが機能要件です (存在する連絡先情報のみを表示します。つまり、静的な連絡先フォームではありません)。

ユーザーはフォーム内の任意の行を追加/削除できるため、次のような HTTP パラメータが生成されます (番号は連続しておらず、連続していない可能性があります)。

contact_ty3=cell
contact3=555-555-5555

contact_ty994=home
contact994=444-444-4444

contact_ty45=email
contact45=abc@def.com

contactしたがって、およびパラメーターの後の数値contact_tyは任意ですが、タイプを関連付けられた連絡先情報に一致させる目的に使用される場合を除きます。

では、受信側では、PHP で、数値を使用してタイプと連絡先を一致させる方法でパラメーターを効率的に処理する方法を教えてください。これを行う最善の方法は正規表現を使用することだと考えていますが、私が考えることができる最も単純な関数は、 $_REQUEST 配列全体を反復処理し、 で始まるパラメーターを取り除き、contactそこから移動します。

より効率的な方法はありますか?おそらく私が知らないこれを行う関数があるときに、手動の文字列/パラメーター解析メソッドを書いているようです。フォーム パラメータの正確な名前は事前にわからないためcontact1contact2、 などがあるという仮定に頼ることはできません。

4

2 に答える 2

1

巧妙な名前を付ければ、投稿で簡単に一致させることができます。

<select name="contact[3][type]">...</select>
<input  name="contact[3][value]" ..>
<select name="contact[994][type]">...</select>
<input  name="contact[994][value]" ..>
<select name="contact[45][type]">...</select>
<input  name="contact[45][value]" ..>

そしてPHPで

<?php
    foreach($_POST['contact'] as $id => $data){
        echo "$id => type is {$data['type']}, value is {$data['value']}";
    }
于 2011-07-19T17:37:57.600 に答える
0

$_POST または $_GET を反復することは良い考えです。$_REQUEST には Cookie が含まれている可能性があるためではありません。ただし、正規表現を使用しないことをお勧めします。この目的で substr を使用できます。観察

foreach($_GET as $k=>$v) {
     if(strpos($Haystack, "contact") === 0) {
          //process $k
     }
}
于 2011-07-19T17:38:07.103 に答える