-2

以下のコードで #bob と #test の一致があると仮定すると、#bob と #to が URL になるように preg_replace 式はどうなるでしょうか (つまり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

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 に答える
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 に答える