web関連
【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つ押さえておけばとりあえずよさそう