Php 从字符串中删除@符号

Php 从字符串中删除@符号,php,regex,preg-replace,Php,Regex,Preg Replace,我有以下资料: preg_replace('/\B@[^\B ]+/', '<a href="profile.php">$0</a>'); preg_replace('/\B@[^\B]+/',''; 它检查以@开头并以空格结尾的任何字符串,并将其转换为链接 现在我需要创建另一个preg_replace,它将从字符串中删除@符号,如@hello,这样它就变成hello 我需要这个,这样我可以将第一个preg\u replace中的链接更改为 请帮忙 您可以将部分pat

我有以下资料:

preg_replace('/\B@[^\B ]+/', '<a href="profile.php">$0</a>');
preg_replace('/\B@[^\B]+/','';
它检查以
@
开头并以空格结尾的任何字符串,并将其转换为链接

现在我需要创建另一个preg_replace,它将从字符串中删除
@
符号,如
@hello
,这样它就变成
hello

我需要这个,这样我可以将第一个preg\u replace中的链接更改为


请帮忙

您可以将部分patrn包装到()中以创建新变量 在这种情况下,您的匹配字符串将不包含@under$1变量

preg_replace('/\B@([^\B ]+)/', '<a href="profile.php?profile=$1">$0</a>');
preg_replace('/\B@([^\B]+)/','';

您可以将部分父项包装在()中以创建新变量 在这种情况下,您的匹配字符串将不包含@under$1变量

preg_replace('/\B@([^\B ]+)/', '<a href="profile.php?profile=$1">$0</a>');
preg_replace('/\B@([^\B]+)/','';

您可以在希望捕获的模式周围使用捕获组
()
,以分离捕获的匹配项和整个字符串。然后,您可以将捕获的匹配项
$1
放在所需的位置,并使用
$0
访问整个字符串匹配项

preg_replace('/\B@(\S+)/', '<a href="profile.php?profile=$1">$0</a>', $str);

查看一个

您可以在您想要捕获的模式周围使用捕获组
()
,以分离捕获的匹配项和整个字符串。然后,您可以将捕获的匹配项
$1
放在所需的位置,并使用
$0
访问整个字符串匹配项

preg_replace('/\B@(\S+)/', '<a href="profile.php?profile=$1">$0</a>', $str);

请参见a

请添加一些解释性文字,以突出显示您的更改及其工作原理。代码总是非常重要,但StackOverflow不仅仅是“代码交换”。谢谢adam@马里奥,我现在明白了。额外的括号允许他具体说明$0和$1的用途。请添加一些解释性文字,以突出说明您的更改以及它的工作原理。代码总是非常重要,但StackOverflow不仅仅是“代码交换”。谢谢adam@马里奥,我现在明白了。额外的括号允许他具体说明0美元和1美元的用途。