2017-06-04 9 views
0

Ich habe einen Text und möchte einfach alles nach meinem ersten Capture entfernen. Ich habe herausgefunden, dass ich mindestens so oft wie ich Zeilenumbrüche wiederhole. "\ s". Aber ich hoffe, dass es eine flexiblere und trockenere Lösung dafür gibt.preg_replace ALLES: Text und Zeilenumbrüche

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

Antwort

0

vom schnellsten zum langsamsten bis Z:

Ohne regex: die naheliegendste

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

Mit preg_match: nehmen, was Sie anstatt sie zu ersetzen wollen, was Sie nicht tun wollen

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

Mit preg_replace: der s Modifikator erlaubt dem Punkt das Newline-Zeichen

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

Alle drei Antworten in inproving meine Fähigkeiten helfen mir passen. Vielen Dank. –

Verwandte Themen