web関連

【PHP】文字列を比較する方法

wordpressで文字列が一緒の時は処理を変えたかったんだけど、どうやって比較すればいいのかわからなかったので備忘録

方法1:「==」を使った比較方法

テキストだから何か特別な事をして比較しないといけないのかと思ったけど、普通の比較演算子=====を使うだけでいいみたい

$title = "ページタイトル";
if($title == "ページタイトル"){// 「===」でも可
    echo "true";// trueを返す
}

=====の違いは、型まで厳密にチェックするかしないかみたい
==は型まではチェックしないので

if(2 == "2"){…}// true
if(2 == 2){…}// true

どっちもtrue
だけど===は型までチェックするから

if(2 === "2"){…}// false
if(2 === 2){…}// true

文字列と数値は型が違うからfalseになる
型まで厳密にチェックをしたかったら===を使う

ちなみに等しくない(!)を使った書き方だと
==!=
===!==
って「=(イコール)」が一つ減るみたいね

今回は文字列の比較だからどっちでもいい

メモ:型の確認する方法

型のチェックはgettype()で確認できる

echo gettype(1);// integer
echo gettype('1');// string

integerってなんだ?って調べたら「整数値」って意味みたい
intってワードだったらよく見かけるけど同じ意味みたいね

方法2:strpos()を使って特定の文字列が入っているかどうかで比較する方法

strpos()は検索対象から検索する文字が何番目にあるかどうかを返して、検索する文字列がなかったらfalseを返す

// strpos('検索対象','検索する文字列');
$title = "ページタイトル";
if( strpos($title ,"ページ") !== false){
    echo "true";//テキストは存在しているからtrue
}else{
    echo "false";
}

テキストはあるのでtrue判定なんだけど、注意すべき点が一つある
strpos()は「検索する文字」があったら「検索対象」の中の何番目にあるかどうか返すから、もし一番最初にあるとき0を返してしまい0はfalse判定になるので!== false=== falseを使って型まで厳密に比較する必要があるみたい

メモ:falseの型ってなんなんだろう?

ちょっと気になったんでgettype(false)で調べたら「boolean」って出てきた

調べると「論理型」っていうtrue(真)やfalse(偽)の型が存在しているみたいね
知らんかった…

方法3:strcmp()を使って文字列の長さで比較する方法

strcmp()を使えば文字列の長さで比較して確認することができるみたい

基本的な使い方だと

strcmp(str1, str2)で
「str1がstr2より小さい」と負の正数
「str1がstr2より大きい」と正の正数
同じだと0を返すみたい

$title = "ページタイトル";
echo strcmp($title ,"ページタイトル");// 0
echo strcmp($title ,"ページタイトルです");// -6
echo strcmp($title ,"ページ");// 12

なので、比較するときは以下のように書く

$title = "ページタイトル";
if(strcmp($title,"ページタイトル") == 0){
    echo "true";// 同じ文字数なのでtrue
}else{
    echo "false";
}
ここで使われている== 0は数値の型だしstrcmp()も数値を返すので=== 0みたいに厳格にチェックしても問題無さそう

色々あるわ
マルチバイト文字とか比較するときに特別な処理する必要性があるのかなと思って調べたけど普通に「==」で何とかなりそうだね

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。