2012-03-25 78 views
1

我正在研究類似於推特的回覆系統。
在一個字符串中有一段文字,其中id是可變的,例如:14&138&,具體取決於您要回復的人。
如何在字符串中找到14&並將其替換爲<u>14&</u>用PHP中的變量文本替換精確的變量字符串?

這是它的外觀:

14& this is a reply to the comment with id 14 

這是應該的樣子:

<u>14&</u> this is a reply to the comment with id 14 

我怎樣才能做到這一點在PHP?提前致謝!

+0

空間,任何規模的數量和空間,然後 - 是正確的? – 2012-03-25 21:45:29

+0

@Dagon是的,這是正確的。 :) – 2012-03-25 21:46:03

+0

你是否希望它也取代3和4在下面,或者應該被排除? '1&開頭。 2&在中間。 3和後面跟着一個詞。 And4&前面有一個詞。最後以5'結尾? – 2012-03-25 22:05:10

回答

2
$text = "14& this is a reply to the comment with id 14"; 

var_dump(preg_replace("~\d+&~", '<u>$0</u>', $text)); 

輸出:

string '<u>14&</u> this is a reply to the comment with id 14' (length=52) 

爲了擺脫&的:

preg_replace("~(\d+)&~", '<u>$1</u>', $text) 

輸出:

string '<u>14</u> this is a reply to the comment with id 14' (length=51) 

$0$1會你的ID。你可以用你喜歡的任何東西來替換標記。

例如鏈接:

$text = "14& is a reply to the comment with id 14"; 

var_dump(preg_replace("~(\d+)&~", '<a href="#comment$1">this</a>', $text)); 

輸出:

string '<a href="#comment14">this</a> is a reply to the comment with id 14' (length=66) 
+0

這樣做的竅門,謝謝你! – 2012-03-25 21:58:54

2

如果你知道的ID,很簡單:

<?php 
    $tweet_id = '14'; 
    $replaced = str_replace("{$tweet_id}&", "<u>{$tweet_id.}&</u>", $original); 

如果不這樣做,preg_replace函數

<?php 
    //look for 1+ decimals (0-9) ending with '$' and replaced it with 
    //original wrapped in <u> 
    $replaced = preg_replace('/(\d+&)/', '<u>$1</u>', $original); 
+0

如果我不知道ID? – 2012-03-25 21:47:12

+0

我擴展了我的答案:它使用[preg_replace](http://php.net/manual/en/function.preg-replace.php) – 2012-03-25 21:52:04

2

使用正則表達式的preg_replace功能。

<?php 

$str = '14& this is a reply to the comment with id 14'; 
echo preg_replace('(\d+&)', '<u>$0</u>', $str); 

正則表達式匹配:一個或多個數字後跟一個&號。