2016-05-12 12 views
-1

Ich habe eine Ladung von Etiketten, die Kamel sind. Einige Beispiele sindHinzufügen von Speicherplatz zu Zeichenfolge basierend auf Bedingung

whatData 
whoData 
deliveryDate 
importantQuestions 

Was ich versuche zu tun ist dies. Jedes Etikett, das das Wort Data enthält, muss dieses Wort entfernt haben. An der Stelle des Großbuchstabens muss ich einen Platz bereitstellen. Schließlich sollte alles in Großbuchstaben geschrieben sein. Ich habe das Entfernen von Daten und den Groß getan, indem Sie diese ($ Daten-> Schlüssel ist das Label)

strtoupper(str_replace('Data', '', $data->key)) 

Der Teil, mit denen ich zu kämpfen, um die Leerzeichen zwischen den Wörtern hinzufügen. Also im Grunde sollten die oben genannten Wörter wie folgt enden

WHAT 
WHO 
DELIVERY DATE 
IMPORTANT QUESTIONS 

Wie kann ich den letzten Teil davon einbeziehen?

Dank

+0

möglich duplizieren http://stackoverflow.com/q/4519739/4323504 –

Antwort

4

Es wird Leerzeichen vor jedem Großbuchstaben hinzufügen. Versuchen Sie folgendes:

$String = 'whatData'; 
$Words = preg_replace('/(?<!\)[A-Z]/', ' $0', $String); 
3

Problem

  • Ihre regex '~^[A-Z]~' werden nur die ersten Großbuchstaben entsprechen. Weitere Informationen finden Sie unter Metazeichen in der Mustersyntax.
  • Ihr Ersatz ist ein Newline-Zeichen '\n' und kein Leerzeichen.

Lösung

Verwendung preg_replace(). Probieren Sie den folgenden Code aus.

$string = "whatData"; 
echo preg_replace('/(?<!\)[A-Z]/', ' $0', $string); 

Ausgabe

what Data 
0

Versuchen folgende:

$string = 'importantQuestions'; 
$string = strtoupper(ltrim(preg_replace('/[A-Z]/', ' $0', $string))); 
echo $string;  

Dies wird Ihnen Ausgang geben wie:

Wichtige Fragen

0

Try this:

preg_split: split on camel case 
array_map: UPPER case all the element 
implode:  Implode the array 
str_replace: Replace the `DATE` with empty 
trim:  trim the white spaces. 

dieses einfache Dinge tun:

echo trim(str_replace("DATE", "", implode(" ", array_map("strtoupper", preg_split('/(?=[A-Z])/', 'deliveryDate', -1, PREG_SPLIT_NO_EMPTY))))); // DELIVERY 

Dieses Ergebnis ist genau das, was Sie wollen.

Verwandte Themen