Ihre Frage ist unklar / mehrdeutig. Sie verwenden den Begriff remove, aber es ist wahrscheinlich, dass Sie damit meinen extract, dass die Zielzeichenfolge in der Datenbank gespeichert werden kann.
mickmackusa
@Makyen Ich bin ziemlich zuversichtlich, dass Sie die Frage zerstört haben, um viele der Antworten richtig zu machen. Denken Sie darüber nach: Warum sollte das OP REGISTER herein der Datenbank speichern wollen ?
Mickmackusa
2
@mickmackusa entfernen kann gleichbedeutend sein mit wegnehmen von, dh 11223344 aus dem String nehmen, ich sehe das Problem hier nicht. Im schlimmsten Fall ist es mehrdeutig, es ist sicherlich nicht "vandalisiert"
Nick
Lesen Sie die vorab zerstörten Versionen. @Nick stackoverflow.com/posts/2192170/revisions Die Wahrheit wird Ihre Meinung ändern. Ich würde mich freuen, wenn diese Frage als unklar geklärt würde.
Mickmackusa
2
@ Mickmackusa Ich habe ... Ich verstehe deinen Standpunkt nicht. Wenn Sie ein so großes Problem mit der Art und Weise haben, wie es geschrieben steht, warum beheben Sie es nicht selbst
Nick,
Antworten:
219
Wenn Sie speziell auf "11223344" abzielen, verwenden Sie str_replace:
Ersetzen Erforderlich. Gibt den Wert an , der den Wert in find ersetzen soll
Zeichenfolge Erforderlich. Gibt die zu durchsuchende Zeichenfolge an
Anzahl Optional. Eine Variable, die die Anzahl der Ersetzungen zählt
Gemäß OP-Beispiel:
$Example_string ="REGISTER 11223344 here";
$Example_string_PART_REMOVED = str_replace('11223344','', $Example_string);// will leave you with "REGISTER here"// finally - clean up potential double spaces, beginning spaces or end spaces that may have resulted from removing the unwanted string
$Example_string_COMPLETED = trim(str_replace(' ',' ', $Example_string_PART_REMOVED));// trim() will remove any potential leading and trailing spaces - the additional 'str_replace()' will remove any potential double spaces// will leave you with "REGISTER here"
@ElijahLynn Ersetzen erfordert, dass Sie Dinge entfernen, zukünftige Änderungen oder Geräusche würden brechen. Dies über _replace zu tun, aber _match würde weiterhin funktionieren.
TravisO
@TravisO gut ja, aber nein. Diese beiden Funktionen sind in Bezug auf die Implementierung nahezu identisch, und die Chancen, dass sich zukünftige Änderungen auf eine von ihnen auswirken, sind gleich . Es besteht die gleiche Möglichkeit, dass zukünftige Änderungen nur an _match vorgenommen werden, wodurch diese Verwendung ungültig wird und _replace immer noch einwandfrei funktioniert. Außerdem ist bei der Versionierung in der Regel sehr darauf zu achten, dass frühere Funktionen nach Möglichkeit nicht gebremst werden.
CT.
Sie brauchen hier keine Erfassungsgruppe. Durch die Verwendung der Erfassungsgruppe wird das $matchArray unnötig aufgebläht . Entfernen Sie die Klammern und greifen Sie über zu $match[0].
Mickmackusa
5
substr () ist eine integrierte PHP-Funktion, die einen Teil eines Strings zurückgibt. Die Funktion substr () verwendet eine Zeichenfolge als Eingabe, die Indexform, in der die Zeichenfolge abgeschnitten werden soll. und ein optionaler Parameter ist die Länge des Teilstrings. Die richtige Dokumentation und den Beispielcode finden Sie unter http://php.net/manual/en/function.substr.php
HINWEIS: Der Index für eine Zeichenfolge beginnt mit 0.
Wie schlagen Sie vor, dass das OP Ihren allgemeinen Hinweis verwendet, um das gewünschte Ergebnis zu erzielen?
Mickmackusa
Ich finde diese Antwort vage und von geringem Wert.
Mickmackusa
1
Verwenden Sie diese Funktion dynamisch, wenn Sie (a) Teile aus (a) festen Indizes einer Zeichenfolge entfernen möchten:
/**
* Removes index/indexes from a string, using a delimiter.
*
* @param string $string
* @param int|int[] $index An index, or a list of indexes to be removed from string.
* @param string $delimiter
* @return string
* @todo Note: For PHP versions lower than 7.0, remove scalar type hints (i.e. the
* types before each argument) and the return type.
*/function removeFromString(string $string, $index,string $delimiter =" "):string{
$stringParts = explode($delimiter, $string);// Remove indexes from string partsif(is_array($index)){foreach($index as $i){
unset($stringParts[(int)($i)]);}}else{
unset($stringParts[(int)($index)]);}// Join all parts together and return itreturn implode($delimiter, $stringParts);}
Für Ihren Zweck:
remove_from_str("REGISTER 11223344 here",1);// Output: REGISTER here
Eine seiner Anwendungen besteht darin, befehlsähnliche Zeichenfolgen auszuführen, deren Strukturen Sie kennen.
Ghostdog schlug bereits eine Explode-Implode-Technik vor, aber ich kann mir nicht vorstellen, eine so langwierige Technik für eine so grundlegende Operation zu unterhalten.
mickmackusa
0
Das folgende Snippet gibt "REGISTRIEREN hier" aus.
preg_replace()In diesem Fall gibt es absolut keinen Grund, Arrays zu übergeben . Die Verwendung einer Erfassungsgruppe hat auch keinen Vorteil.
mickmackusa
Genau. Das Array wird nur zur Vereinfachung hinzugefügt. Es kann vernachlässigt werden. es wird keinen Schaden anrichten. Erfassungsgruppe zum Ausschließen von Zahlen hinzugefügt. Dies funktioniert gemäß der dargestellten Frage. Weitere Modifikationen und Feinabstimmungen können individuell vorgenommen werden.
arango_86
Mein Punkt ist, dass Ihr Snippet unnötige Einschlüsse enthält, deren Aufnahme keinen Sinn ergibt.
Würde es nicht "REGISTER__here" mit zwei Leerzeichen zurückgeben (denken Sie an Unterstriche als Leerzeichen, Kommentar erlaubt mir nicht zwei aufeinanderfolgende Leerzeichen)? Wegen der Leerzeichen vor und nach dem "(. *)".
TechNyquist
6
Diese Antwort ist mindestens 100% falsch. Beweis: 3v4l.org/LDLEM Warum hat diese Antwort 15 UVs?
remove
, aber es ist wahrscheinlich, dass Sie damit meinenextract
, dass die Zielzeichenfolge in der Datenbank gespeichert werden kann.REGISTER here
in der Datenbank speichern wollen ?Antworten:
Wenn Sie speziell auf "11223344" abzielen, verwenden Sie
str_replace
:quelle
Sie können str_replace () verwenden , das wie folgt definiert ist:
Sie können den Code also wie folgt schreiben:
Wenn Sie eine bessere Übereinstimmung über reguläre Ausdrücke benötigen, können Sie preg_replace () verwenden .
quelle
Angenommen, 11223344 ist nicht konstant
quelle
Gemäß OP-Beispiel:
quelle
Wenn Sie einen regelbasierten Abgleich benötigen, müssen Sie Regex verwenden
Dies entspricht dem ersten Satz von Zahlen. Wenn Sie also genauer sein müssen, versuchen Sie Folgendes:
quelle
$match
Array unnötig aufgebläht . Entfernen Sie die Klammern und greifen Sie über zu$match[0]
.substr () ist eine integrierte PHP-Funktion, die einen Teil eines Strings zurückgibt. Die Funktion substr () verwendet eine Zeichenfolge als Eingabe, die Indexform, in der die Zeichenfolge abgeschnitten werden soll. und ein optionaler Parameter ist die Länge des Teilstrings. Die richtige Dokumentation und den Beispielcode finden Sie unter http://php.net/manual/en/function.substr.php
HINWEIS: Der Index für eine Zeichenfolge beginnt mit 0.
quelle
Verwenden Sie diese Funktion dynamisch, wenn Sie (a) Teile aus (a) festen Indizes einer Zeichenfolge entfernen möchten:
Für Ihren Zweck:
Eine seiner Anwendungen besteht darin, befehlsähnliche Zeichenfolgen auszuführen, deren Strukturen Sie kennen.
quelle
Das folgende Snippet gibt "REGISTRIEREN hier" aus.
Die API preg_replace () verwendet uns wie unten angegeben.
quelle
preg_replace()
In diesem Fall gibt es absolut keinen Grund, Arrays zu übergeben . Die Verwendung einer Erfassungsgruppe hat auch keinen Vorteil.Mach Folgendes
Dies würde "REGISTERhere" zurückgeben.
oder
Dies würde "REGISTRIEREN hier" zurückgeben.
quelle