删除字符串“#User#”和“#”之间的“#User#,<br/> <br/>感谢提供”中的所有单词,并从字符串中提取“#User#”

时间:2019-04-09 14:41:02

标签: php regex

我需要一些正则表达式来删除标题中指定的单词。我在正则表达式下面尝试过,但是没有用。我也想从给定的字符串中提取“#User#”-意思是从不包含任何空格的字符串中以“#”开头并以“#”结尾。

preg_match_all("~#(.*?)#~", “#User#,<br><br>Thanks#For providing” , 
$wordReplaceArr_tmp);

Result of above code is below:

Output: User#,<br><br>Thanks

Expected result: "#User#"

1 个答案:

答案 0 :(得分:1)

如果我说对了,您希望用户名(?)位于前两个#标签之间,并删除其他所有内容。您的正则表达式很贪婪,这意味着它捕获的内容超过了应有的程度。将标签添加到“不匹配”列表中,直到找到其他标签后,它才会捕获任何内容。

$str = '#User#,<br><br>Thanks#For providing';
preg_match_all('/#([^#]+)#/mis', $str, $matches);

print_r($matches);

此代码的结果如下:

Array
(
    [0] => Array
        (
            [0] => #User#
        )

    [1] => Array
        (
            [0] => User
        )

)

您现在可以使用$matches[1][0]

访问该用户