2012-03-28 27 views
1

我該如何解析php中的url?我想要做它如此這般如何製作一個bbcode來將url標籤解析爲鏈接?

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

假作:

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

這是我用我的其他BB代碼代碼:

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]

進入解析設置高亮文本: Google

您可能需要使用更具體的regex不僅僅是+濾除潛在的不好/危險的輸入。

+0

這是一個糟糕的解決方案...我可以添加到我的網址somethink這樣的附加XSS: [URL = HTTP://google.com」的onclick = 「myfucnk();」]谷歌[/ URL ]或[url = javascript:alert('XSS!');] Google [/ url] – Lory 2017-09-28 13:42:51