2017-08-30 1 views
0

Ich habe eine Zeichenfolge, die im folgenden Format (beachten Sie die zufällige Anzahl der Leerzeichen zwischen jedem Wort und am Anfang jeder Zeile):Entfernen Sie Leerraum vom Anfang jeder neuen Zeile einer Zeichenfolge

 1 . BritishAirways 15FEB LONDON HONGKONG

    2 . CathayPacific 01MAR HONGKONG SHANGHAI

  3 . Qantas 12MAR SINGAPORE SYDNEY

ich möchte die Ausgabe

1 . BritishAirways 15FEB LONDON HONGKONG 
2 . CathayPacific 01MAR HONGKONG SHANGHAI 
3 . Qantas 12MAR SINGAPORE SYDNEY

ich habe die

unten Code muß sein

Jedoch gibt dies die folgenden, was jedoch fast richtig ist, es war weiß Leerzeichen am Anfang der Linien 2 und 3

1 . BritishAirways 15FEB LONDON HONGKONG 
    2 . CathayPacific 01MAR HONGKONG SHANGHAI 
3 . Qantas 12MAR SINGAPORE SYDNEY

Wer weiß, wie ich den weißen Bereich am Anfang der Zeilen entfernen 2 und 3

Antwort

0

Verwenden Sie trim(' Your string ') es wird alle Leerzeichen vor und nach Zeichenfolge entfernen.

+0

Das entfernt keine Zeilenumbrüche und Leerzeichen usw. _in_ der Zeichenfolge, nach der das OP fragt. –

0

Sie könnten einfach eine weitere Anweisung hinzufügen, um die nachgestellten Leerzeichen loszuwerden.

$flightinfo = preg_replace('/^\s+/m', '', $flightinfo); 
3

Sie können einen einzelnen regex Ersatz verwenden, um zu erreichen, was Sie brauchen:

$flightinfo = preg_replace('~^\h+|\h+$|(\R){2,}|(\s){2,}~m', '$1$2', $flightinfo); 

die regex demo See.

Einzelheiten

  • ^\h+ - alle 1 oder mehrere horizontale Leerzeichen am Anfang einer Zeile (^ entspricht einem Zeilenstart aufgrund des m Modifikator)
  • | - oder
  • \h+$ - 1 oder mehr horizontale Leerzeichen am Ende einer Zeile ($ entspricht einem Zeilenende aufgrund des Modifikators m)
  • | - oder
  • (\R){2,}-2 oder mehr Zeilenumbruch Sequenzen, die die letzte in der Gruppe 1
  • | Einfangen - oder
  • (\s){2,}-2 oder mehrere Leerzeichen Erfassung der letzte in Gruppe 2

Der Ersatz ist die Ersatzrückreferenzen zu Gruppe 1 und 2.

Siehe PHP demo:

$re = '/^\h+|\h+$|(\R){2,}|(\s){2,}/m'; 
$flightinfo = ' 1 . BritishAirways 15FEB LONDON HONGKONG 


    2 . CathayPacific 01MAR  HONGKONG SHANGHAI 



    3 . Qantas 12MAR SINGAPORE SYDNEY'; 
$flightinfo = preg_replace($re, '$1$2', $flightinfo); 
echo $flightinfo; 

Ausgang:

1 . BritishAirways 15FEB LONDON HONGKONG 
2 . CathayPacific 01MAR HONGKONG SHANGHAI 
3 . Qantas 12MAR SINGAPORE SYDNEY 
1

Generaly Sie benötigen regex wie:

"/\s+\s/" 

Damit Sie Multi Räume erkennen und nur mit einem Raum ersetzen.

Diese Leerzeichen erkennen, nachdem neue Linie:

"/\n\s+/" 

Diese Leerzeichen erkennen, bevor neue Linie:

"/\s+\n/" 

Doppel neue Linien:

"\n+" 

Und Sie können diese kombinieren schön zu entferne Dinge, die du nicht brauchst.

Nach allen Regex nur trim() Code zu reinigen.

0

Ich würde dies vorschlagen:

$flightinfo = trim(preg_replace("~\s*\R\s*~", "\n", $flightinfo)); 

Es ersetzt eine beliebige Folge von Leerraum, mit mindestens einem Zeilenumbruch (\R), mit einem einzelnen Zeilenumbruch (\n) und trimmt das Ergebnis.

Verwandte Themen