2017-10-14 9 views
0

Ich habe die richtige Funktion, nur nicht das richtige Regex-Muster zu entfernen (ID: 999999) aus der Zeichenfolge. Dieser ID-Wert variiert, ist jedoch ausschließlich numerisch. Ich entferne gerne alles inklusive der Klammern.Suche nach preg_replace, um Zeichen aus meinen Strings zu entfernen

$string = "This is the value I would like removed. (ID:17937)"; 
$string = preg_replace('#(ID:['0-9']?)#si', "", $string); 

Regex ist nicht mehr forte! Und brauche Hilfe bei diesem.

+0

''0-9'' innerhalb einer einzelnen Zeichenfolge in Anführungszeichen? Sie müssen die Grundlagen der Programmierung lernen und SO ist nicht der richtige Ort dafür (meiner Meinung nach). –

Antwort

1

Try this:

$string = preg_replace('# \(ID:[0-9]+\)#si', "", $string); 

Sie benötigen \ die Klammer mit einem Backslash zu entkommen.
Sie sollten keine Anführungszeichen um den Zahlenbereich verwenden.
Sie sollten + (eine oder mehrere) anstelle von ? (null oder eins) verwenden.
Sie können am Anfang ein Leerzeichen hinzufügen, um ein Leerzeichen am Ende der resultierenden Zeichenfolge zu vermeiden.

0

In PHP Regex ist in / und nicht , danach sind Klammern für Capture-Gruppe, so müssen Sie ihnen entkommen, um sie zu entsprechen.

Auch zu verwenden preg_replace Ersatz müssen Sie Capture-Gruppe verwenden, so dass in Ihrem Fall /(\(ID:[0-9]+\))/si wird der eine schöne regelmäßige Ausdruck sein.

0

sind hier zwei Möglichkeiten:

Code: (Demo)

$string = "This is the value I would like removed. (ID:17937)"; 
var_export(preg_replace('/ \(ID:\d+\)/',"",$string)); 

echo "\n\n"; 

var_export(strstr($string,' (ID:',true)); 

Ausgang: (I var_export() verwendet um zu zeigen, dass die Technik "sauber" ist und gibt keine Hinter Leerzeichen)

'This is the value I would like removed.' 

'This is the value I would like removed.' 

Einige Punkte:

  • Regex ist eine bessere/flexiblere Lösung, wenn Ihre ID-Teilzeichenfolge irgendwo in der Zeichenfolge vorhanden sein kann.
  • Ihr Regex-Muster benötigt keine Zeichenklasse, wenn Sie das Kurzzeichen \d verwenden.
  • Regex allgemein sollte nur verwendet werden, wenn die Standard-String-Funktion nicht ausreicht oder wenn es sich für einen bestimmten Fall als effizienter erweist. Wenn der ID-Teilstring immer am Ende des Strings auftritt, ist strstr() eine elegante/perfekte Funktion.
  • Beide meiner Methoden schreiben eine (Leerzeichen) vor ID, um die Ausgabe sauber zu machen.
  • Sie brauchen nicht entweder s oder i Modifikatoren auf Ihrem Muster, weil s nur Fragen, wenn Sie ein . (dot) verwenden und Ihre ID wird wahrscheinlich immer groß geschrieben, so dass Sie suchen keine Groß- und Kleinschreibung müssen.
Verwandte Themen