preg_match()を使用して一度試みましたが、例えば hatenas という値がDBに入っており引数で取得した値がhatenaの場合でも同じとみなされてしまいます。
PHP: preg_match - Manual
preg_matchでもeregでも何でも、正規表現マッチとは一致するかどうかではなく、対象文字列の中にパターンが存在するか、を判定します。
文字列全体が一致することを確認したいときは、パターンの先頭と最後に明示的に先頭(^)・最後($)だと書いてやる必要があります。
preg_match(’/hatena/, ’hatenas’) はtrueを返しますが、preg_match(’/^hatena$/, ’hatenas’) はfalseを返します。
でも、ただの文字列比較なら、正規表現なんて不要では…?if($str1 == $str2){ } とかでいいんじゃないですか。
PHP: preg_match - Manual
$subject = ’hatena,dood,foo’;
$subject .= ’,’;
$pattern = ’/hatena,/’;
if (preg_match($pattern, $str))
{
マッチした
}
こんな感じにDBからの文字列の最後にカンマを追加して、
検索文字列もカンマ付きで検索するという方法が簡単だと思います。
簡単ですが参考になればと思います。
回答ありがとうございます。
私がまったくの初心者でわからないのですが$subjectはどこに行ってしまったのでしょうか?
PHP: preg_match - Manual
例 2. 単語”web”を探す が参考になると思います。
¥bは単語の区切りになります。’/¥bhatena¥b/’で検索してください。
先ほどの回答には不備がありましたね。
カンマは先頭にも必要でした。ごめんなさい。
回答ありがとうございました。
回答ありがとうございます。
実はただの文字列比較ではなく hatena,dood,foo のように,で区切られているものですので $str == $str2とはいかないのです。
ちなみにセキュリティ面ではどうなのでしょうか?preg_match(’/^hatena$/, ’値’)といった場合でも絶対にhatenaという値が入った場合のみ1を返すのでしょうか?それとも脆弱はやはりあるのでしょうか?