web関連

【PHP】URLで条件分岐させる方法

【PHP】URLで条件分岐させる方法

phpを使ってURLで読み込ませるものを変えたい時に文字列検索の「strstr()」という関数があったので使った際の備忘録

URLで条件分岐する方法

例:http://sample.com/blog/ページの時

<?php 
$url = $_SERVER['REQUEST_URI'];
// strstr(検索対象,検索する文字列)
if(strstr($url,'blog')): ?>
// urlにblogが含まれる(ture)
<?php else: ?>
// urlにblogが含まれない(false)
<?php endif; ?>

文字列検索で使うならstrpos()の方がいいらしい

「strpos()」の方がメモリの消費が抑えられるらしい
ただ書き方が違う

<?php 
$url = $_SERVER['REQUEST_URI'];
if(strpos($url,'blog')!== false): ?>
// urlにblogが含まれる(ture)
<?php else: ?>
// urlにblogが含まれない(false)
<?php endif; ?>
単純な文字列を検索するだけならstrpos()の方がいいらしい

strstr()とstrpos()の返り値の違い

  • 「strstr()」は対象の文字列があったらそれ以降を取得
  • 「strpos()」は対象の文字列が現れる場所を取得
<?php 
// 「blog/start」と文字列で返す
echo strstr("blog/start", "blog");
// 「0」と整数で返す
echo strpos("blog/start", "blog");
 ?>

「strstr()」は文字列が見つかってもそれ以降も取得するけど、「strpos()」は検索対象の文字列があったら整数として返すから「strpos()」の方が早いのかもね

整数として返すから0だとfalse判定されてしまうので「!== false」で型までチェックする必要性があるみたい

くわしい事はPHP: strstr – Manualを見た方がいいかも

なんか文字列検索系他にも「stripos()」、「strripos()」、「strpbrk()」、「substr()」と色々関数あるみたいだけどとりあえず今回の2つ押さえておけばとりあえずよさそう

Leave a Comment

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

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