2014-03-07 33 views
0

我试图让用户链接到其自己的wallposts内的其他wallposts。因此,例如,如果用户类型:请参阅后:: 35获取更多信息我会改变的字符串:请参阅<a href="posts/35">35</a>更多信息查找并替换以某些字符开头的文本中的所有字符串

我有以下的功能,抓住从所有职位数内容,如开头所示::。

function getBetween($content, $start, $end, $rest = array()) { 
    $r = explode($start, $content, 2); 
    if (isset($r[1])) { 
     $r = explode($end, $r[1], 2); 
     $rest[] = $r[0]; 
     return getBetween($r[1], $start, $end, $rest); 
    } else { 
     return $rest; 
    } 
} 

$post = 'Lorem ::35 ipsum ::36 dolor sit ::37 ::38'; 
$links = getBetween($post, '##', ' '); 

$链接返回一个包含35,36,37,38,我不知道是我怎么能在原始字符串具有超链接替换它们的数组。

回答

1

此代码将找到::digit,其侧面为空白或出现在文本的开头或结尾。

$post = 'Lorem ::35 ipsum ::36 dolor sit ::37 ::38'; 
$post = preg_replace('/(\G|\s+|^)::(\d+)((?=\s+)|(?=::)|$)/','$1 <a href="?postid=$2">$2</a> $3',$post); 
echo $post; 

// Lorem <a href="?postid=35">35</a> ipsum <a href="?postid=36">36</a> dolor sit <a href="?postid=37">37</a> <a href="?postid=38">38</a> 
相关问题