2012-07-28 38 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); 

注意:我还没有尝试过,所以我的正则表达式可能有一些小故障。

相关问题