如何使用PHP正则表达式匹配所有内容?

时间:2009-06-02 17:37:13

标签: php regex

如何使用PHP正则表达式匹配所有内容?我试过了:/ [。\ r \ n] * /,但它没有用。有任何想法吗?感谢。

这是我为PHP类解析电子邮件的方法:

public function getHeader($headerName) { 
    preg_match('/[\r\n]' . $headerName . '[:][ ](.+)[\r\n][^ \t]/Uis', "\n" . ltrim($this->originalMessage), $matches); return preg_replace('/[\r\n]*/', '', $matches[1]); 
    } 

5 个答案:

答案 0 :(得分:9)

/.*/s(见perl's docs)。 s选项表示(从该网址引用):

  

将字符串视为单行。 (制作。匹配换行符)

答案 1 :(得分:6)

我认为,基于您在上面添加\n\r,您希望将多行匹配。在这种情况下,请使用:

/.*/s

(请注意明确的/s修饰符,即更改.以匹配任何字符,即使是新行,它通常也不匹配。)

请参阅http://www.perl.com/doc/manual/html/pod/perlre.html

答案 2 :(得分:2)

为什么要匹配所有内容?使用它作为一个条件没有意义,因为它总是如此。如果你想捕获文本,你不需要正则表达式,因为你只使用整个字符串。如果你试图绕过污点检查,那么你就会感到羞耻(并且问一个关于这样做的单独问题)。

请注意,我们这里有一点XY Problem。你有一些任务X,并认为Y是解决方案的一部分。你问Y,但从不告诉我们X.当我们不知道你想要做什么时,很难回答你真正的问题。 :)

答案 3 :(得分:0)

/.*/ s怎么样?

在角色类([])中。只是意味着时间。

答案 4 :(得分:0)

/[\.\r\n]+/能做你想做的吗?

这个kludge之前也对我有用:

my $abstract_text = /Abstract:([\s\S]+?)\nReferences/m;

如果您希望捕获包含任意文本或介于多个捕获之间的模式,这将非常有用。