結構使うけどすぐ忘れる関数の使い方
phpの関数で使用頻度高いけど毎回ググってる関数の使い方を記憶に定着させるためにメモ。
str_replace
特定の文字列を置換。
$zip = "123-4567";
$zip = str_replace("-", "", $zip);
echo $zip;
//123456
郵便番号や電話番号などをDBに保存する際に”-”を除いた文字列で保存したい場合など。
私は悪い使い方として
古いプログラムを改修する際に誰が作ったか知らない俺俺関数で吐き出されたhtmlの一部だけ変更したい場合使ったりする。
function OreOreFunction(){
return "<p>俺俺俺俺だよ!</p>";
}
$text = OreOreFunction();//俺俺関数
$change_text = str_replace("だよ!", "ですよ!", $text);
echo $change_text;
//<p>俺俺俺俺ですよ!</p>
idをつけたい時などは
function OreOreFunction(){
return "<p>俺俺俺俺だよ!</p>";
}
$text = OreOreFunction();//俺俺関数
$change_text = str_replace("<p>", "<p id='oreore'>", $text);
echo $change_text;
//<p id='oreore'>俺俺俺俺だよ!</p>
本当はコードを読んでしっかり理解して関数の中身を理解した方がいいのだろうけど、そんな時間もないし古いコードの癖が強い関数のソースなんて興味が湧かない・・・
explode,implode
特定の文字で文字列を切り分けて配列にしてくれる関数
$ids = array();
$ids[] = 123;
$ids[] = 456;
$ids[] = 789;
$id_text = implode(",", $ids);
//どこかに渡す
//ゴニョゴニョされる
//返ってきた時
$id_array = explode(",", $id_text);
var_dump($id_array);
//array(3) { [0]=> string(3) "123" [1]=> string(3) "456" [2]=> string(3) "789" }
$id_text = implode(",", $id_array);
$SQL = "UPDATE SET ********* WHERE id IN({$id_text})";
var_dump($SQL);
//string(45) "UPDATE SET ********* WHERE id IN(123,456,789)"
データベースから抜き取ったレコードをどっかに渡してゴニョゴニョして返してもらう時、どのidのレコードを編集したか覚えておきたい時に使ったりした。
strpos
文字列の中に特定の文字列が含まれるかどうか
こちらも初心者の頃にはどう役に立つかいまいち分からなかったな
注文番号やお問合せ番号などの業務的に使用する番号の頭にアルファベットなどをくっ付けて意味を持たすことはよくある話。
注文番号の一例
T00001 /電話注文
F00001 /FAX注文
W00001 /WEB注文....
$number = "F1234-001";
if(strpos($number, 'F') !== false){
echo "FAX注文です!";
}elseif(strpos($number, 'T') !== false){
echo "電話注文です!";
}elseif(strpos($number, 'W') !== false){
echo "WEB注文です!";
}else{
echo "???";
}
//FAX注文です!
なぜ条件式が !==false なのかというと、先頭の文字列でマッチしてしまうと0を返してしまうから
$number = "F1234-001";
if(strpos($number, 'F')){
echo "FAX注文です!";
}elseif(strpos($number, 'T')){
echo "電話注文です!";
}elseif(strpos($number, 'W')){
echo "WEB注文です!";
}else{
echo "???";
}
//???
Fが先頭にあるにも関わらず条件式の最後まで流れていってしまった
0文字目で見つかったから0を返したんですが
0はfalseと見なされてしまうので厳密チェックでしっかり判別しないといけないですね。
strposよく使うのですが、忘れがちなのが引数にどちらを入れていいか分からなくなることがよくある。
逆に入れてしまうともちろん上手く検索されませんので何か良い覚え方は無いものか・・・・・
疲れたので今回は以上です。
よく忘れる関数はまだまだあると思うのでちょくちょく追加していきます。