preg_replace除了@符号之外的一切

时间:2014-02-05 20:10:37

标签: php preg-replace

我已经搜索了一个这样的例子,但似乎无法找到它。

我希望替换字符串的所有内容,但@texthere

$ Input = this is @cool isn't it?

$ Output = @cool

我可以使用@cool移除preg_replace("/@(\w+)/", "", $Input);,但无法弄清楚如何做相反的事情

1 个答案:

答案 0 :(得分:3)

您可以匹配@\w+,然后替换原始字符串。或者,如果您需要使用preg_replace,您应该可以使用第一个捕获组替换所有内容:

$output = preg_replace('/.*(@\w+).*/', '\1', $input);

使用preg_match的解决方案(我认为这会更好):

$matches = array();
preg_match('/@\w+/', $input, $matches);
$output = $matches[0];

上述两种模式都没有解决如何处理多次匹配的输入的问题,例如this is @cool and @awesome, right?