0

bbcode のような文字列を取り、それを html リンクに変換する正規表現があります。それはうまくいきます。しかし、リンクのタイプ(内部/外部)を検出して、絶対(外部)URLのように厳密に使用するかhttp://extsite.com/category/keyword/、内部URLの一部を使用category/keyword/して定義済みのURLに追加するかを決定したい$url . category/keyword/

正規表現は次のとおりです。

preg_replace('/\[([^\]]+)\]\[([^\]"]+)\]/i', '<a href="$2">$1</a>', $text)

どんな提案でも大歓迎です。

4

1 に答える 1

1

あなたのコメントに基づいて、http:// (または ftp:// などの同様のプロトコル) で始まるリンクはすべて絶対リンクであると想定します。その他のリンクはすべて相対リンクと見なされます ($url がプレフィックスとして付けられます)。

// replace absolute links
$text = preg replace ('/\[([^\]]+)\]\[([A-Za-z]+:\/\/[^\]"]+)\]/i',
                      '<a href="$2">$1</a>', $text )


// replace all remaining (relative) links
// $url must have a tailing slash '/'
$text = preg replace ('/\[([^\]]+)\]\[([^\]"]+)\]/i',
                      '<a href="'.$url.'$2">$1</a>', $text )
于 2012-04-28T10:11:26.330 に答える