2012-03-28 4 views
1

PHPでURLを解析するにはどうすればよいですか?これは私が私の他のBBコードで使用しているコードですリンクにURLタグを解析するためのbbcodeを作成するにはどうすればよいですか?

<a href="http://www.google.com">Google</a> 

:それは

[url=http://www.google.com]Google[/url] 

を行くので、私はそれを作るたいことに変わり

function postparser($post){ 
     $post = str_replace("\n",'END_OF_LINE',$post); 

     $post = str_replace("[line]",'HORIZONTAL_LINE',$post); 

     $post = str_replace("[bold]",'BOLD_TEXT_START',$post); 
     $post = str_replace("[/bold]",'BOLD_TEXT_END',$post); 

     $post = str_replace("[yt]",'YOUTUBE_START',$post); 
     $post = str_replace("[/yt]",'YOUTUBE_END',$post); 

     $post = sanitize($post); 

     $post = str_replace("END_OF_LINE",'<br />',$post); 

     $post = str_replace("HORIZONTAL_LINE",'<hr />',$post); 

     $post = str_replace("BOLD_TEXT_START",'<b>',$post); 
     $post = str_replace("BOLD_TEXT_END",'</b>',$post); 

     $post = str_replace("YOUTUBE_START",'<iframe width="560" height="315" src="http://www.youtube.com/embed/',$post); 
     $post = str_replace("YOUTUBE_END",'" frameborder="0" allowfullscreen></iframe>',$post); 

     return $post; 
    } 

は、どのように私は行くだろうこれをする?

になります

答えて

6
$post = preg_replace('/\[url=(.+?)\](.+?)\[\/url\]/', '<a href="\1">\2</a>', $post); 

: [URL = http://google.com]Google[/url]

解析されたBBコードテキストに:。 Google

あなたはおそらくちょうどよりも、より具体的なregexを使用したいと思う+フィルタリングします潜在的に悪い/危険な入力。

+0

これは悪い解決策です...私はこのようにXSSを追加するために私のURLにsomethinkを追加できます: [url = http://google.com "onclick =" myfucnk(); "] Google [/ url ]または[url = javascript:alert( 'XSS!');] Google [/ url] – Lory

関連する問題