我有一个像这样的字符串:
$string = "This is my name: David";
我想把它变成这样:
This is my name: <a href="https://www.example.com?q=David">David</a>
手段:
获取介于“名称:”(第一个定界符)和字符串末尾(第二个定界符)之间的所有内容。
在提取的字符串(在本例中为“ David”)之后设置</a>
。
在提取的字符串(在本例中为“ David”)前面设置<a href="https://www.example.com?q=">
。
将提取的字符串(在本例中为“ David”)插入“ q=
”之后,例如:q=David
我擅长PHP,但始终坚持使用正则表达式。
有人可以帮助我做到这一点吗?
编辑:
这是我到目前为止所拥有的:
<?php
$string = "This is my name: David";
if(stripos($string, "name: ") !== false) {
$string = str_replace("name: ", "<a href=\"https://www.example.com?q=\">", $string);
$string = implode(array($string, "</a>"));
}
echo $string;
?>
答案 0 :(得分:1)
您可以使用此preg_replace
:
$string = preg_replace('/\b(name:\h*)(.+)/i',
'$1<a href="https://www.example.com?q=$2">$2</a>', $string);
RegEx详细信息:
\b
:从单词边界开始(name:\h*)
:匹配name:
,后跟捕获组#1中的0个或更多水平空白字符(.+)
:匹配捕获组#2中任何字符的1+ /i
:忽略大小写修饰符$1
和$2
来获取格式化的html