2012-03-19 4 views
0

が機能していません。にpreg_replaceは、私はすべてのパターン>>「番号」(>> 4など)を変換したい

この機能で何が問題なのか教えてください。

function autolink($content) { 
$pattern = "/>>[0-9]/i" ; 
$replacement = "<a href=\"#\\0\">>>\\0</a>"; 
return preg_replace($pattern, $replacement, $content, -1); 

この機能はうまくいきます。この関数は、自動的にURLをクリック可能なハイパーリンクに変換します。なぜ最初の機能が動作していないのか分かりません。

function autolink2($contents) { 
    $pattern = "/(http|https|ftp|mms):\/\/[0-9a-z-]+(\.[_0-9a-z-]+)+(:[0-9]{2,4})?\/?";  // domain+port 
    $pattern .= "([\.~_0-9a-z-]+\/?)*";                                                // sub roots 
    $pattern .= "(\S+\.[_0-9a-z]+)?"  ;                               // file & extension string 
    $pattern .= "(\?[_0-9a-z#%&=\-\+]+)*/i";                                            // parameters 

    $replacement = "<a href=\"\\0\">\\0</a>"; 
    return preg_replace($pattern, $replacement, $contents, -1);} 
+1

これは長いショットかもしれませんが、最後の2つの '' 'の代わりに' $ replacement'に '> >'を入れるのはどうですか?また、数字が2桁以上の場合、つまり「>> 10」と考えることもできます。正規表現 ''/>> [0-9] +/i "'を使用することができます。 –

答えて

1

この

function autolink($content){ 
    return preg_replace('#\>\>([0-9]+)#','<a href="#$1">>>$1</a>', $content); 
} 
テスト済み

と作品を試してみてください。

関連する問題

 関連する問題