PHP中的正则表达式。更严格的捕获规则

时间:2016-04-06 19:13:28

标签: php regex

我正在练习正则表达式,而且我现在很擅长。

我基本上想用正则表达式去掉字符串中的跨度。在此之前,数据标签的大小未知。

<span class="atwho-inserted" data-atwho-at-query="*@jish*">
usertagslug[jishstaff]
usertagname[JishStaff]
</span>‍ lol try do a
<span class="atwho-inserted" data-atwho-at- query="*@jish*">usertagslug[jishstaff] usertagname[JishStaff]
</span>‍"

这是我的PHP类,里面有正则表达式:

{
protected $value;


public function stripAll($value)
{
    $value = preg_replace('/data-atwho-at-query="@(.*)">/', '', $value);
    $value = str_replace('<span class="atwho-inserted"', '', $value);
    $value = str_replace('</span>', '', $value);

    return $value;
}

}

我目前得到的结果基本上留给我:

usertagslug[jishstaff] usertagname[JishStaff]‍ 

与预期的

输出相符
usertagslug[jishstaff] usertagname[JishStaff]‍ lol try do a usertagslug[jishstaff] usertagname[JishStaff]‍

我只是不确定如何对我的正则表达式更加严格。

谢谢大家。

1 个答案:

答案 0 :(得分:1)

通过用空字符串替换<\/?span[^>]*>的所有出现来删除所有span元素。

之后你将被留下

usertagslug[jishstaff]
usertagname[JishStaff]
‍ lol try do a
usertagslug[jishstaff] usertagname[JishStaff]

然后在每一行上执行修剪,并用空格替换所有\n