Php 在preg_replace函数期间删除字符
我需要从字符串中提取一些文本,然后用在一个实例中而不是在另一个实例中删除的字符替换该文本。希望这个例子能告诉你我的意思(这就是我到目前为止所说的):Php 在preg_replace函数期间删除字符,php,preg-replace,character,Php,Preg Replace,Character,我需要从字符串中提取一些文本,然后用在一个实例中而不是在另一个实例中删除的字符替换该文本。希望这个例子能告诉你我的意思(这就是我到目前为止所说的): $commentry=“@Bob1990我认为你错了…”; $commentText=preg_replace(“/(@[^\s]+)/”,“”,$commentEntry); 我希望结果是: <a href="http://www.youtube.com/comment_search?username=Bob1990">@Bob19
$commentry=“@Bob1990我认为你错了…”;
$commentText=preg_replace(“/(@[^\s]+)/”,“”,$commentEntry);
我希望结果是:
<a href="http://www.youtube.com/comment_search?username=Bob1990">@Bob1990</a> I think you are wrong...
我认为你错了。。。
但我得到:
<a href="http://www.youtube.com/comment_search?username=@Bob1990">@Bob1990</a> I think you are wrong...
我认为你错了。。。
我已经在这个问题上工作了至少一个小时,几乎放弃了希望,所以非常感谢任何帮助 你可以试试这样的
$commentText = preg_replace("/(@)([^\s]+)/", "<a target=\"_blank\" href=\"http://www.youtube.com/comment_search?username=$2\">$1$2</a>", $commentEntry);
$commentText=preg_replace(“/(@)([^\s]+)/”,“”,$commentEntry);
可以尝试这样的方法
$commentText = preg_replace("/(@)([^\s]+)/", "<a target=\"_blank\" href=\"http://www.youtube.com/comment_search?username=$2\">$1$2</a>", $commentEntry);
$commentText=preg_replace(“/(@)([^\s]+)/”,“”,$commentEntry);
您可以做的是调整捕获。将@
移出大括号:
preg_replace("/@([^\s]+)/",
然后您可以编写替换字符串,如
'<a href="...$1">@$1</a>'
“”
请注意第一个
$1
如何重新插入文本,第二个$1
以逐字@
作为前缀以将其重新插入。您可以做的是调整捕获。将@
移出大括号:
preg_replace("/@([^\s]+)/",
然后您可以编写替换字符串,如
'<a href="...$1">@$1</a>'
“”
请注意,第一个
$1
只是重新插入文本,第二个$1
以逐字@
作为前缀以将其重新输入。您正在模式中捕获@
,因此在使用$1
时,它将始终被输出。请尝试以下方法:
$commentText =
preg_replace(
"/@([^\s]+)/",
"<a target=\"_blank\" href=\"http://www.youtube.com/comment_search?username=$1\">@$1</a>",
$commentEntry
);
$commentText=
预更换(
“/@([^\s]+)/”,
"",
$commentry
);
这里的区别是,
@
不再作为$1
的一部分捕获(即,它将只捕获Bob1990。因为它是一个文本值,所以不需要成为任何模式的一部分。相反,我只是将其更改为在捕获的名称之前作为元素文本中的文本值输出。(即,它现在是@$1
而不仅仅是$1
)。您正在捕获模式中的@
,因此当您使用$1
时,它将始终被输出。请尝试以下方法:
$commentText =
preg_replace(
"/@([^\s]+)/",
"<a target=\"_blank\" href=\"http://www.youtube.com/comment_search?username=$1\">@$1</a>",
$commentEntry
);
$commentText=
预更换(
“/@([^\s]+)/”,
"",
$commentry
);
这里的区别是,@
不再作为$1
的一部分捕获(即,它将只捕获Bob1990。因为它是一个文本值,所以不需要成为任何模式的一部分。相反,我只是将其更改为在捕获的名称之前作为元素文本中的文本值输出。(即,它现在执行@$1
,而不仅仅是$1
)