0

私はクーポン付きのショッピングカートに取り組んでいますが、所有者は、顧客が発行されたクーポンに適切なケースを使用したくないようで、クーポンが機能しないという絶え間ない苦情でスタッフを悩ませていると私に言いました.

最初は単純にユーザー入力を strtoupper() するつもりでしたが、これでは所有者が大文字のクーポン コードのみを使用する必要があり、意味がありません。

ユーザー入力に対して preg_match() を実行し、すべての文字が正しい場合に一致させ、大文字と小文字を完全に無視したいと思います。しかし、悲しいかな...必要なものを取得するために正規表現を操作する方法がわかりません。

これは私が今持っているものです:

strtoupper ($this->request->post['coupon'])

私が言ったように、これはデータベースからの大文字のクーポンコードに対してうまく機能しますが、所有者はすべてのコードを大文字にする必要があります.

どんな助けでも大歓迎です。

-V

4

3 に答える 3

6

両方を同じケースに変換して比較するだけです。

if(strtolower($input) == strtolower($check))

さらに良いstrcasecmp()ことに、バイナリセーフで大文字と小文字を区別しない文字列比較を行うために使用します。

if (strcasecmp($input, $check) == 0)
于 2012-09-28T20:20:45.273 に答える
1

クーポンコードの確認方法によって異なります。データベース クエリを実行している場合は、SQL などを使用して、大文字と小文字を区別しないクエリを実行できます。構成ファイルなどと 1 つずつ比較する場合はif (code_entered === valid_code)if (strtolower(code_entered) === strtolower(valid_code)). それ以外の場合は、実際の比較がどのように行われているかを知る必要があります。これが重要な部分です。

于 2012-09-28T20:21:00.677 に答える
0

「これには、所有者が大文字のクーポンコードのみを使用する必要があり、それは意味がありません。」

状況を説明する方法から、顧客入力の一貫したケース( 'dまたは'd)と一致するように、これらのクーポンコードを一貫したケース(上または下)に保存することは実際には理にかなっているようです。strtoupperstrtolower

とはいえ、正規表現の大文字と小文字を区別しないマッチングは、/i修飾子を使用して実現されます。

しかしstrcasecmp()、すでに提案されているが、おそらくより良い解決策です。

于 2012-09-28T20:22:37.703 に答える