データベースに登録されているURLを表示させるという、すごく単純な作業が発生したのだが、DB上のURLにhttp://があったり、なかったりというカタチで登録されていて、そのままリンクをはると誤作動が起きる可能性がある。
ってことで、本当は正規表現でやろうとおもったのですが、めんどくさすぎたので、最初の文字を取得して、http://あるばあいはそのまま。ない場合は、http://を追加して表示ということをしました。
この際、大文字と小文字で記載されてことも考えて対処してみました。
まず、最初のなん文字かを文字列から抜き出します。
使うのはこんなの。
mb_substr('対処になる文字列','取得開始位置(0なら先頭)','取得する文字数');
$URL = "http://www.coipo.net/"; //http:ありのURL $URL2 = "www.coipo.net/"; //http:なしのURL $SUB = mb_substr($URL,0,5); $SUB2 = mb_substr($URL2,0,5); echo $SUB; echo $SUB2;
大文字でかかれてたり、小文字で書かれてたりするので、無視して比較したいです。なので、下記をつかいます。
strcasecmp('文字列1','文字列2'); //比較して同じなら、0を返してくれます。
$HTTP = "http:"; strcasecmp($SUB,$HTTP); strcasecmp($SUB2,$HTTP); $HTTPS = "https"; strcasecmp($SUB,$HTTPS); strcasecmp($SUB2,$HTTPS);
$URL = "http://www.coipo.net/"; $SUB = mb_substr($URL,0,5); $HTTP = "http:"; $HTTPS = "https:"; if(strcasecmp($SUB,$HTTP)==0 or strcasecmp($SUB,$HTTPS)==0){ echo $URL; }else{ echo "http://" . $URL; }
今回はデーターベースに登録されているURLの形がある程度コントロール下にあるので、このような書き方でいいと思うが、たとえば、http:///など/が3つある場合(間違いで入力されている場合)などが予測される場合は、まったく違った書き方になるとおもいますよね~。注意が必要です。