preg_replace 一切:文本和换行符

preg_replace EVERYTHING: text and line breaks

我有一条短信,只是想在第一次捕获后删除所有内容。我发现我重复 ".\s" 的频率至少与换行符一样多。但我希望有一个更灵活和干燥的解决方案。

$subject = "SomeText()                                  asaas
DFDFDFD

dsdsds

dsdsds";
$pattern = "#\).*\s*.*\s*.*\s*.*#" ; 
$replacement = ")";
$newText = preg_replace($pattern, $replacement, $subject);
Utils_Echo::myEcho($subject);
Utils_Echo::myEcho($newText);


$pattern = "#\)[.\s]*#"; //I hoped something like this would work but it could not figure it out. Can you show me a way?

从最快到最慢排序:

没有正则表达式:最明显

$newText = ( false !== $pos = strpos($subject, ')') ) ? substr($subject, 0, $pos + 1)
                                                      : $subject;

使用preg_match拿你想要的而不是替换你不想要的

$newText = preg_match('~[^)]*\)~', $subject, $m) ? $m[0] : $subject;

With preg_replace: s修饰符允许点匹配换行符

$newText = preg_replace('~\).*~s', ')', $subject);