PHP preg_match或_replace从字符串中查找子字符串,同时保留匹配项

时间:2012-10-07 04:04:59

标签: php regex string

所以我有这个评论-esk就像我正在研究的系统一样,显然我并没有想到这一点,但是我暂时在可预见的未来阻止了我的方法。那就是说。

我目前正在使用

$pattern = '/\[@(\w+):(.*)\]/';
$subject = '[@keyword:string]';
preg_match($pattern, $subject, $matches);

从特定模式类型中查找特定信息。这是[@keyword:string]的范围,这很有用。然而,在我的搜索中提出这样做​​的方法,我没有告诉我,我使用它的字符串也包含其他东西,如评论。所以整个字符串看起来像'[@keyword:string]
Hello World`

上面的代码将为我转储数组,第一项是我正在寻找的实际匹配项,下一项是关键字,下一项是字符串。哪个好,因为我用它来做别的事情。然而。就像我说的那样,我从来没有补偿过<br>Hello World part。我需要做的是与上面非常类似的事情。但只留下<br>Hello World部分作为可重用的字符串,因为我打算重新加入2个字符串。我的过程完成后。除此之外,在这种情况下完成后的过程是使用匹配的用户名替换我要查找的模式,或者基于关键字替换图像,然后调度函数以找到正确的名称,或者为此创建图像标记。图片。哪个好,我得到了那个部分,它只是从字符串中剥离模式,所以当我得到名称或图像时,我可以将它重新加入字符串。

希望这是有道理的。

1 个答案:

答案 0 :(得分:0)

使用以下某种模式:

'/\[@(\w+):(.*?)\]/'

'/\[@(\w+):(.*)\]/U'

注意:PCRE_UNGREEDY