-2

假设在下面的代码中,#bob 和 #test 匹配,那么 preg_replace 表达式将是什么,以便 #bob 和 #to 是 url(即http://test.com/read.php?id=bob ? 注意 id=bob 部分没有标签。

$text = "my name is #bob and I like #to #test things.";

preg_match_all("/(#\w+)/", $text, $matches);

foreach($matches['0'] as $match){

$substring = substr($match, 1);


$titlerows = mysql_num_rows(mysql_query("SELECT title FROM title WHERE title='$substring'"));

if($titlerows == 1) {

    $text = preg_replace('/$match/', replace?? , $text);

}

}

echo $text;
4

2 回答 2

1

如果我很好地理解了您的问题,我希望这对您有所帮助。

$text = preg_replace('/'.$match.'/', 'http://test.com/read.php?id='.substr($match,1) , $text);

编辑:

$text = preg_replace("/$match/", '<a href="http://test.com/read.php?id='.$substring.'">'.$match.'</a>' , $text);
于 2012-12-21T23:47:46.817 回答
1

就像 FeRtoll 的回答一样,但这利用了我们之前已经做过的事实substr()

$text = preg_replace("/$match/", "http://test.com/read.php?id=.$substring", $text);

对于评论中更复杂的替换,请执行以下操作:

$text = preg_replace("/$match/", "<a href='http://test.com/read.php?id=$substring'>$match</a>", $text);

我喜欢插值而不是串联。

于 2012-12-22T00:17:33.460 回答