PHP;如何在定界符和字符串结尾之间获取字符串?

时间:2018-06-29 07:33:07

标签: php regex string

我有一个像这样的字符串:

$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;
?>

1 个答案:

答案 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