请原谅我是RegEx的完全新手,并且之前没有真正使用过preg_replace。
我正在尝试取一个字符串并用“@(username)\ n”替换任何出现的“(用户名)说:”。由于用户名只能包含空格,字母和数字,因此我使用了[A-Za-z0-9 \ s]。但是,它不起作用,我知道我做错了什么:
$message = preg_replace("/([A-Za-z0-9\s]*) said:", "@$0\n", $message);
这是使用preg_replace的正确方法,还是我应该采取不同的方式来解决这个问题?
答案 0 :(得分:0)
$ message ='有人说:';
$ message = preg_replace(“/(。*)\ ssaid:/ Ui”,“REPLACE说:”,$ message); echo $ message;
答案 1 :(得分:0)
你非常接近答案。主要问题是缺少end delimiter(/)。以下是我推荐的正则表达式:
<?php
$string = '(username) said:';
$string = preg_replace('#(\([A-Za-z0-9\s]+\)) said:#',"@$1\n", $string);
echo $string;
?>
我还使用了+而不是*作为加号意味着字符需要发生一次或多次(而不是0次或更多次)。 $ 0将匹配整个搜索模式(包括所说的单词)但你只想匹配用户名,这是括号中的一组,所以我使用$ 1。我还将括号转义为\(\)
,因为您的示例在括号中有用户名。