人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

(PHP)DBからデータを取得し、引数で取得した値とまったく同じな場合は処理を行い、異なる場合はエラーメッセージを表示させるにはどうしたらいいのでしょうか?

preg_match()を使用して一度試みましたが、例えば hatenas という値がDBに入っており引数で取得した値がhatenaの場合でも同じとみなされてしまいます。

●質問者: esecua
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:dB Hatena PHP エラーメッセージ データ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ito-yu
●30ポイント

http://php.net/preg_match

PHP: preg_match - Manual

preg_matchでもeregでも何でも、正規表現マッチとは一致するかどうかではなく、対象文字列の中にパターンが存在するか、を判定します。

文字列全体が一致することを確認したいときは、パターンの先頭と最後に明示的に先頭(^)・最後($)だと書いてやる必要があります。

preg_match(’/hatena/, ’hatenas’) はtrueを返しますが、preg_match(’/^hatena$/, ’hatenas’) はfalseを返します。

でも、ただの文字列比較なら、正規表現なんて不要では…?if($str1 == $str2){ } とかでいいんじゃないですか。

◎質問者からの返答

回答ありがとうございます。

実はただの文字列比較ではなく hatena,dood,foo のように,で区切られているものですので $str == $str2とはいかないのです。

ちなみにセキュリティ面ではどうなのでしょうか?preg_match(’/^hatena$/, ’値’)といった場合でも絶対にhatenaという値が入った場合のみ1を返すのでしょうか?それとも脆弱はやはりあるのでしょうか?


2 ● moke3rd
●2ポイント

http://jp.php.net/preg_match

PHP: preg_match - Manual

$subject = ’hatena,dood,foo’;

$subject .= ’,’;

$pattern = ’/hatena,/’;

if (preg_match($pattern, $str))

{

マッチした

}


こんな感じにDBからの文字列の最後にカンマを追加して、

検索文字列もカンマ付きで検索するという方法が簡単だと思います。


簡単ですが参考になればと思います。

◎質問者からの返答

回答ありがとうございます。

私がまったくの初心者でわからないのですが$subjectはどこに行ってしまったのでしょうか?


3 ● moke3rd
●28ポイント

http://jp.php.net/preg_match#

PHP: preg_match - Manual

例 2. 単語”web”を探す が参考になると思います。


¥bは単語の区切りになります。’/¥bhatena¥b/’で検索してください。


先ほどの回答には不備がありましたね。

カンマは先頭にも必要でした。ごめんなさい。

◎質問者からの返答

回答ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ