2017-06-04 128 views
0

我有一个文本,只是想删除我的第一次捕获后的一切。我发现我重复“\ s”至少和我有换行符一样多。但我希望有一个更灵活和干燥的解决方案。preg_replace一切:文本和换行符

$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? 

回答

0

从有序最快到最慢:

没有正则表达式:最明显

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

随着preg_match把你想要的东西,而不是代替你做什么不想要

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

随着preg_replaceS修正允许点以匹配换行符

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

所有这三个答案可以帮助我在我的inproving技能。谢谢。 –