人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPについての質問です。変数に格納されている値をチェックしたいのですがやり方がわかりません。
ご存知でしたら教えていただきたいと思います。

具体的には下記の場合です。
変数$infoに「http://」が含まれているかどうかをチェックしたいのです。

自作したゲストブックなのですが「http://」が含まれていたらAタグを付加してデータベースへ保存したいと考えています。
他に良い方法があれば教えていただけたらと思います。

●質問者: moks
●カテゴリ:インターネット ウェブ制作
✍キーワード:http:// PHP いるか ゲスト タグ
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● pinkymonk
●20ポイント

stristr 〔文字列検索〕

http://f32.aaa.livedoor.jp/~azusa/index.php?t=php&p=6#strist...

この関数でどうですか。

◎質問者からの返答

回答ありがとうございます。試してみます。


2 ● Mook
●50ポイント

文字列の有無を確認する関数はstrstrstrpospreg_matchなどがありますが、たとえばstrpos を使った場合

if ( strpos( $info, 'http://' ) != FALSE ) {
 DB への登録処理
}

などとかけます。

◎質問者からの返答

試してみます。ありがとうございました。


3 ● hironobu-san
●50ポイント

こんな感じでしょうか

$retval = strpos($info, 'http://');

if($retval !== false) {

// 含む

} else {

// 含まれていない

}

◎質問者からの返答

試してみます。ありがとうございました。


4 ● kn1967
●100ポイント ベストアンサー

$info = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\">\\0</a>", $info);

この一行でURLの部分をリンクに置換する事が可能です。(<>は半角に直してね)

種を明かせば実はこの方法はPHPのマニュアルに載ってるものの丸写し(http://manual.xwd.jp/function.ereg-replace.html)なんですけど、関数が多すぎて探すのも大変ですから、できればPHPの関数一覧が見やすい本を1?2冊手元に置いておくことをお勧めします。

セキュリティの面では、上記で行き成り置換するのではなく、本当に存在するアドレスかどうかを確認してから置換してデータベースに書き込むといったような1手間が必要になります。

質問文とは外れますのでヒントだけ書いておきますね。

preg_match("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",$info,$m,PREG_OFFSET_CAPTURE)でアドレス部分を配列変数(ここでは$mとしてます)に読み出して、すべてのアドレスに対してfopenなどで開けるかどうかを確認する。

◎質問者からの返答

回答ありがとうございました。私のやりたかった事が教えて頂いたereg_placeの1行で出来ました。

非常に助かりました。


5 ● yusuke6461
●0ポイント

http://q.hatena.ne.jp/11636697848676


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ