Wie Zeilenumbruch Uhrzeit einfügen (Platzhalter für Uhrzeit)

Hallo,
ich habe einen String in dem ohne Zeilenumbruch mehrere Meldungen stehen, eine neue Meldung beginnt immer mit xx:xx Uhr.
Wie kann ich diese trennen bzw. vor jedem xx:xx Uhr einen Zeilenumbruch einfügen?
Ich würde es mit preg_replace machen, aber dafür bräuchte ich einen Platzhalter für die Uhrzeit. Oder gibts einen anderen Weg?

gruß
goran

Hi,
ich weiß ja nicht wo der String herkommt aber es wäre bestimmt die einfachste Lösung, die einzelnen Meldungen mit einem Zeilenumbruch (
) zu versehen, bevor Sie in dem String landen. Dann kannst du dir den Platzhalter und den replace ersparen.

mfg
Smudo

Hi,
leider kommen die Daten aus dem Text Parser und laufen nur einmal durch „strip_tags“ aber ich sehen in den Orginaldaten auch keinen Zeilenumbruch. Daher wäre der weg vor der Uhrzeit nen Zeilenumbruch zu setzen wohl der einfachste.

gruß
goran

Suche im String nach Uhr, zähle rückwärts bis vor dein xx.xx und setze deinen Zeilenumbruch.

Ansonsten poste deinen gesamten String.

PHP: String-Funktionen - Manual

wie sieht denn der HTML Code aus? vielleicht entfernst du ja mit strip_tags einen <br> und könntest den durch ein
ersetzen vor dem strip_tags.

Viele Grüße
Chris

@RWN
mit welcher Funktion kann ich denn ab einem Wert zurück zählen und dort etwas einfügen? Diese Möglichkeit ist mir auch eingefallen aber ich haben keinen passenden Befehl gefunden
@spaceguy
es gibt in dem Code einen <br>, allerding an einer für mich falschen Stelle :slight_smile:
der Htmlcode sieht so aus

07:03 Uhr:<br /> A 73 Breitengüßbach Richtung Bamberg <div class="splitter"></div></div><div class="blitzer">07:07 Uhr:<br /> B26 Bischberg in Ri

und so weiter.

gruß
goran

preg_replace ist schon richtig:


$text=preg_replace('/(\d{2}:\d{2}\s+Uhr)/',"<br>\\1",'07:03 Uhr:<br /> A 73 Breitengüßbach Richtung Bamberg <div class="splitter"></div></div><div class="blitzer">07:07 Uhr:<br /> B26 Bischberg in Ri..');

Tommi

@tommi
danke funktioniert perfekt, jetzt würd ich nur noch gern verstehen warum :smiley:
Kannst du (oder jemand anders darf natürlich auch) mir das mal erklähren
(\d{2}:\d{2}\s+Uhr)
Ich vermute mal 2 Stellen, Doppelpunkt, nochmal 2 Stellen und „Uhr“? Aber was soll das „s“ da mit drin? Und was ist dann mit \1 im replacement?
Man sieht, ich hab noch nicht wirklich Ahnung von der Syntax aber man lernt ja dazu :slight_smile:

gruß
goran

\d - eine Ziffer [0-9]
\s - das Leerzeichen
\1 - ist eine Rückwärtsreferenz - siehe: PHP: Back references - Manual

Hier noch ein schönes Spielzeug dazu. :slight_smile:

regex online tester - regular expressions

\1 - ist eine Rückwärtsreferenz

Ganz konkret in diesem Fall ist es nur das Ergebnis der (ersten) Klammer des Suchausdruckes, welches im Replacement an das „<br>“ einfach wieder angehangen wird.

Als „Referenz“ im Sinne einer RegEx würde dagegen dieses Ergebnis als zusätzliche Bedingung (matchen auf Wiederholung) im Suchmuster benutzt werden.

Tommi

Ein Detail fehlt noch:

    • das Zeichen davor muss mindestens einmal oder öfter vorkommen.

»07:03 Uhr« wäre also auch noch erlaubt. (da sollten eigentlich mehrere Leerzeichen zwischen 3 und Uhr stehen…)

Super, jetzt versteh ich das auch, wieder was gelernt :stuck_out_tongue: danke euch allen
gruß
goran