1

私はこれを行う必要があります:

ユーザーがBBCodeタグを挿入すると、preg_replaceとregexを使用して変換を行います。

例えば

function forumBBCode($str){
   $format_search=array(
      '#\[url=(.*?)\](.*?)\[/url\]#i'
   );

   $format_replace=array(
      '<a class="lforum" target="_blank" href="$1">$2</a>'
   );

   $str=preg_replace($format_search, $format_replace, $str);
   $str=nl2br($str);
   return $str;
}

今私はこれも欲しいです:ユーザーがリンク付きの通常のテキストを挿入するとき、これも変換されなければなりません。コードを次のように記述した場合、このtroughtpreg_replace関数を実行できません。

$format_search
'#(www\..*?)#i'

$format_replace
'<a class="lforum" target="_blank" href="$1">$1</a>'

リンクを2回変換します([url]内で、リンクにこのタグがない場合)。

だから私はこの関数に思います:

    function checkLinks($string) {
    $arrelab="";
    $arr=split(' |\r\n', $string);
    for($i=0; $i<sizeof($arr); $i++) {
        echo $i." - ".$arr[$i]."<br/>";
        if ((strpos($arr[$i], 'www.')!==false) or (strpos($arr[$i], 'http://')!==false) or (strpos($arr[$i], 'ftp://')!==false)) {
            if (strpos($arr[$i], '[url=')===false) {
                $arr[$i]='<a class="lforum" target="_blank" href="'.$arr[$i].'">'.$arr[$i].'</a>';
            }
        }

        $arrelab=$arrelab." ".$arr[$i];
    }
    return $arrelab;
}

問題は、空白に関しては、改行に関しては分割が必要なことです。どんな助けでもいただければ幸いです。

ps私の悪い英語でごめんなさい:)

乾杯

4

4 に答える 4

2

最も簡単なオプションは、最初にプレーンテキストのURLを解析し、等号の直後に来ないようにすることです。

マリオスからの更新:

preg_replace('#(?<![>/"])(((http|https|ftp)://)?www[a-zA-Z0-9\-_\.]+)#im', '<a href="$1">$1</a>'

于 2010-07-09T19:37:59.043 に答える
2

後読みアサーションを使用すると、簡単に回避できます。

preg_replace('#(?<![>/"])((http://)?www.........)#im', '<a href="$1">$1</a>'

したがって、正規表現は「または>で囲まれたURL、または前に/が付いたURLをスキップします
。これは回避策であり、解決策ではありません。

PS:target ="_blank"はユーザーを悩ませています。いい加減にして。

于 2010-07-09T19:41:29.753 に答える
1

あなたの問題はあなたのタイトルを読むことによって特定することができます..正規表現と組み合わせて 解析する

htmlまたはbb-codeは正規言語ではないため、正規表現で「解析」することはできません。

正規表現を使用する代わりに、bb-codeパーサーを作成(または検索)する必要があります。

BBコードパーサーに対するGoogleの最初の結果は、NBBC:The NewBBCodeParserです。でも使ったことがないので品質についてはコメントできません。

于 2010-07-09T19:31:45.237 に答える
1

これを行う簡単な方法があります。RedBonzaiDevelopersブログでウォークスルーを作成しました。それへのリンクはここにあります:http: //www.redbonzai.com/blog/web-development/how-to-create-a-bb-codes-function-in-php/

ご不明な点がございましたら、お気軽にお問い合わせください。

RedBonzai

于 2010-10-14T17:05:56.660 に答える