Ich muss fett um eine Telefonnummer innerhalb einer Zeichenfolge umschließen. Ich habe die folgende Regexregulärer Ausdruck, um Telefonnummern fett zu machen - funktioniert nicht immer
/(\d[\d\s]*)(?=\s+)/
, die für das funktioniert:
Rufen Sie uns unter 0800 2458 452 jetzt! diese
aber nicht: So
Rufen Sie uns jetzt auf 0800 2458 452
wenn die Zahl am Ende der Zeichenfolge tritt der Regex nicht richtig funktioniert. Es gibt die Zeichenfolge aus, bei der das Fett der letzten drei Ziffern fehlt.
Call us now on <b>0800 2458</b> 452
Kann jemand sehen, was mit dem Code falsch ist?
$bold_text = preg_replace('/(\d[\d\s]*)(?=\s+)/', '<b>$1</b>', $text);
Wirklich, '(? = \ B)' ist eine Tautologie. Warum sollte eine nullbreite Assestion innerhalb einer Assertion mit der Breite null verwendet werden? '(? = \ b)' = '\ b',' (? <= \ b) '=' \ b' –
ja. Du hast recht. Ich habe gerade mit Leerzeichen angefangen und habe die Logik nicht geändert :) – splash58
Beachten Sie, dass [Ihr Regex wird auch Float-Werte entsprechen] (https://regex101.com/r/rW7kG1/1), während meine letzte vorgeschlagene Regex sie vermeiden wird. –