2012-07-28 55 views
0

這裏一個字是一個簡單的例子:刪除開始以特定字母/字符PHP

$correction = "game"; 
$text ="Hello this is an example of a $word that starts with a $dollar sign"; 
$text = str_replace("\$word",$correct,$text); 

如果我回聲$文本,它會說:您好,這是一個美元符號開始遊戲的例子。這工作得很好。 現在我希望能夠將任何以美元符號開頭的單詞改成遊戲 ,因此它會更改所有以$開頭的單詞並將它們變成單詞「遊戲」 有任何想法嗎?

回答

2

你需要爲這個正則表達式:

$text = preg_replace('/\$[a-z]+/i', 'game', $text); 
+0

小心在行末'$' - 在第一遍的時候也可以幫我! :^) – rjz 2012-07-28 02:30:44

+0

@rjz - 感謝您的提示! – nickb 2012-07-28 02:33:19

+0

同樣,先生! :^) – rjz 2012-07-28 02:33:40

1

使用正則表達式的preg_replace

$correction = "game"; 
$text ="Hello this is an example of a \$word that starts with a \$dollar sign"; 
$text = preg_replace('/\$\w+/', $correction, $text); 
print $text; 
5

一個簡單的正則表達式應該做的伎倆:

$text = preg_replace("#\$[^\b\s]+#", $correction, $text); 
+1

你可能想要'[^ \ b] +',不是? – nickb 2012-07-28 02:32:54

+0

呼叫良好。謝謝,@nickb! – rjz 2012-07-28 02:33:26

+0

我可能是錯誤的...現在[它符合一切](http://regexr.com?31loj)。但沒有'+',它不夠匹配。此外,我相信這將匹配「非言語」,對吧?就好像這個字符串裏有'$ 4'或者類似的東西。 – nickb 2012-07-28 02:36:00

1

喜歡的東西所以:

preg_replace("/(\w*)$([a-z]+)/i", "$1$correction", $text); 

注意:我還沒有嘗試過,所以我的正則表達式可能有一些小故障。