2012-03-19 47 views
0

我想每个模式>>“数字”转换(如:>> 4)用户线程自动的preg_replace不工作

<a href="#4">&gt;&gt;4</a> 

所以我做了这个功能,但它不工作。

你能告诉我这个函数有什么问题吗?

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

该功能效果很好。此功能会自动将网址转换为可点击的超链接。我不知道为什么第一个功能不起作用。

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

这可能是一个长镜头,但将'> >'放在'$ replacement'而不是最后两个'>>'里怎么办?另外,您可能想要考虑数字超过一位的情况,即“>> 10”。你可以使用正则表达式''/ >> [0-9] +/i“'。 – 2012-03-19 01:20:50

回答

1

试试这个

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

测试和工程。