2012-02-12 11 views
0

OK。だから私はhtmlにbbcoded文字列を解析する関数を構築しています。 BBコードリンクの構造はそうのようなものです:PHP BBCodeおよびリンク

[url=http://somelink.com/]Link[/url] 

そして、私はそれを作りたい:

<a href="http://somelink.com/">Link</a> 

しかし、私はまた、リンクが有効であればXSSから自分を守るために、チェックしたいです。私は、有効なリンクをチェックするために、この正規表現を見つけた:、私はそれはそれはHTMLに解析するために、その後のURLが有効であるだとかどうかを確認するために$ strのとforeachの試合をpreg_match_allしようとした

/(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/ 

そして今、それは思わIそれはできません。助言がありますか?

+0

を解析するPECL extensionを使用することができますか?どのような出力/エラーがありますか? –

+0

ウェブ上で利用可能なマークダウンの1つが、このすべてをあなたのために引き出すことになります。 Githubにはいくつかのリストがあります。 http://github.github.com/github-flavored-markdown/ –

+0

ここにコードの一部があります。 $ links = array(); if(preg_match( '/ \ [url =(。*)\](。*)\ [\/url \] /'、$ str、$ links)) { echo '

' . print_r($links, true) . '
'; } これは私が望むものと一致しません。 – nvlbg

答えて

0

PHPの組み込みのFilterモジュールを見てください。これはPHP 5.2以降で利用可能で、有効なURLをフィルタリングする定数としてFILTER_VALIDATE_URLを含んでいます。 usage examplesを参照してください。

これは決して使ってはいませんが、言語の組み込み機能を中継することは正規表現を使用するよりもはるかに安全です(正規表現に見えないので)。

+0

これは私の問題ではありません。 – nvlbg

+0

問題を以下より指定してください:) – J0HN

+0

BBCodeをhtmlに置き換えて有効なURLをチェックする正規表現を作成できません。 – nvlbg

0

なぜホイールを再発明するのですか?

あなたはそれを試してみましたかBBコード

関連する問題