Ich möchte prüfen, ob vor dem Bindestrich (-) ein Zeichen steht.Überprüfen Sie, ob etwas vor dem Zeichen steht. Php
Wenn es dann etwas <br>-
hinzufügen Wenn es nur Platz vorhanden ist, nichts zu tun. Ich bin nicht gut mit Regexes :(
Ich möchte prüfen, ob vor dem Bindestrich (-) ein Zeichen steht.Überprüfen Sie, ob etwas vor dem Zeichen steht. Php
Wenn es dann etwas <br>-
hinzufügen Wenn es nur Platz vorhanden ist, nichts zu tun. Ich bin nicht gut mit Regexes :(
habe ich schlecht am Anfang meiner Karriere Codierung mit regex sein, aber nur die Zeit nehmen, es zu studieren.
Das Muster Sie suchen, ist sehr einfach : ([^\s])(-)
Hier können Sie mit ihr testen: http://regexr.com/3f73e
[^\s]
bedeutet alle Zeichen übereinstimmen, die kein Leerzeichen ist (\s
bedeutet Leerzeichen)
-
entspricht dem Bindestrich
()
bedeutet eine Erfassungsgruppe. Capture-Gruppe 1 erfasst also den Charakter vor dem Bindestrich und Capture-Gruppe 2 erfasst den Bindestrich. Dies ist wichtig für den Austausch, da Sie die Erfassungsgruppe 1 beibehalten möchten.
Die Lösung preg_replace
Funktion und spezifische RegexMuster verwendet:
$str = "The couch said: 'Use one-two-three combination'. -a) But it wasn't about boxing, it was about ping-pong";
$new_str = preg_replace("/(?<=\S)-/", "<br>-", $str);
print_r($new_str);
der Ausgang (als view-Quelle code):
The couch said: 'Use one<br>-two<br>-three combination'. -a) But it wasn't about boxing, it was about ping<br>-pong
\S
- zeigt auf das kein Leerzeichen Zeichen
(?<=\S)
- positive assetion Lookbehind, stellt sicher, dass ein Bindestrich durch ein Zeichen
zeigen vorangestellt ist uns die schlechte Regex, die Sie –
Sie haben müssen auf die Frage hinzuzufügen, was, wenn überhaupt, Sie versucht haben. – Ale
$ newstr = preg_replace ('/-\./ s', '
-', "Dies ist eine Zeile - das ist die zweite"); Dies ist, was ich versucht habe, aber ich denke, etwas muss vor Bindestrich in Regex sein –