Ich versuche, eine Zeichenfolge wie folgt zu nehmen:
$string = "This (1) is (2) my (3) example (4) text";
In allen Fällen, in denen eine positive ganze Zahl in Klammern steht, möchte ich diese einfach durch die ganze Zahl ersetzen.
Der Code, den ich jetzt verwende, lautet:
$result = preg_replace("\((\d+)\)", "$0", $string);
Aber ich bekomme immer eine
Trennzeichen darf nicht alphanumerisch oder umgekehrter Schrägstrich sein.
Warnung
Irgendwelche Gedanken? Ich weiß, es gibt andere Fragen, die diese Frage beantworten, aber mein Wissen über Regex reicht nicht aus, um auf dieses Beispiel umzusteigen.
Du bist fast am Ziel. Du benutzt:
$result = preg_replace("((\d+))", "$0", $string);
preg_*
Funktionsfamilie Angeben, sollte in einem Paar von Trennzeichen begrenzt werden. Da Sie keine Begrenzungszeichen verwenden, erhalten Sie diese Fehlermeldung.(
und )
sind Metazeichen in einem regulären Ausdruck, was bedeutet, dass sie eine spezielle Bedeutung haben . Da Sie die literale Klammer und die schließende Klammer verwenden möchten, benötigen Sie Um sie mit einem \
..__ zu entkommen, wird alles, was auf \
folgt, buchstäblich behandelt.\d+
richtig erfassen. Die erfasste Ganzzahl ist jedoch in $1
und nicht in $0
. $0
hat die gesamte Übereinstimmung, dh Ganzzahl in Klammern.Wenn Sie alle oben genannten Änderungen vornehmen, erhalten Sie:
$result = preg_replace("#\((\d+)\)#", "$1", $string);
1) Sie benötigen ein Trennzeichen, der /
funktioniert einwandfrei.
2) Sie müssen die Zeichen (
und )
mit Escapezeichen versehen, damit es nicht zu einer anderen Gruppierung führt.
3) Auch die Ersetzungsvariablen beginnen hier bei 1 und nicht bei 0 (0 enthält den vollständigen Text, der die Klammern enthalten würde).
$result = preg_replace("/\((\d+)\)/", "\\1", $string);
So etwas sollte funktionieren. Weitere Fragen finden Sie unter PHP preg_replace()
Dokumentation - es ist wirklich gut.
Überprüfen Sie die Dokumente - Sie müssen vor und nach Ihrem Muster ein Trennzeichen verwenden: "/\((\d+)\)/"
Sie sollten auch die äußeren Klammern oben meiden, da sie Literale sind und keine verschachtelten, passenden Gruppen.
Siehe: preg_replace Handbuchseite
Trennzeichen darf nicht alphanumerisch oder umgekehrter Schrägstrich sein.,
geben Sie Ihre Parameter in "/ .... /" wie unten angegeben ein. Andernfalls wird der Code ausgegeben. >>> Trennzeichen darf nicht alphanumerisch oder umgekehrter Schrägstrich sein.
$yourString='hi there, good friend';
$dividorString='there';
$someSstring=preg_replace("/$dividorString/",'', $yourString);
echo($someSstring);
// hi, good friend
.. arbeitete für mich.
Versuchen:
<?php
$string = "This (1) is (2) my (3) example (4) text";
$output = preg_replace('/\((\d)\)/i', '$1', $string);
echo $output;
?>
Die Klammern sind Sonderzeichen in regulären Ausdrücken. Du musst ihnen entkommen, um sie zu benutzen.