Bei der Verwendung von PHP für die Multibyte-String-Verarbeitung ist MB_Eregi_Replace eine sehr praktische Funktion, die den regelmäßigen Austausch der Multibyte-Codierung unterstützt und von Fall unempfindlich ist. Viele Entwickler begegnen jedoch bei der Verwendung einer Verwirrung: Das Ersatzergebnis sieht aus wie ein Array, ist jedoch tatsächlich eine Zeichenfolge.
In diesem Artikel wird dieses Phänomen analysiert, damit Sie den Rückgabewerttyp und die Verwendung von mb_eregi_replace korrekt verstehen können.
mb_eregi_replace ist eine multi-byte-reguläre Ersatzfunktion, die durch die Php Mbstring-Erweiterung bereitgestellt wird. Seine Funktion ähnelt Preg_Replace , ist jedoch für den Multi-Byte-Zeichensatz optimiert. Sein Funktionsprototyp ist wie folgt:
<Code> String mb_eregi_replace (String $ muster, String $ Ersatz, String $ String [, String $ option = "msr"]) </code>Parameterbeschreibung:
$ muster : reguläres Ausdrucksmuster, Fall-unempfindlich.
$ Ersatz : Die ersetzte Zeichenfolge.
$ String : Die Zielzeichenfolge, nach der gesucht wird.
$ option : reguläres Ausdrucksmodifikator, standardmäßig zu "MSR" .
Der Rückgabewert ist die ersetzte Zeichenfolge.
In vielen Fällen finden Entwickler Anrufe:
<Code> $ result = mb_eregi_replace ('muster', 'ersetzt', $ subjekt); var_dump ($ result); </code>Eine Array-ähnliche Struktur wird im Ausgabeergebnis angezeigt, zum Beispiel:
<Code> Zeichenfolge (14) "Array (Inhalt)" </code>Dies liegt tatsächlich daran, dass der Ersatz für Ersatzzeichenfolge Variablen enthält oder dass das $ -Subjekt selbst ein Array-ähnliches Zeichenfolgenformular hat oder die reguläre Erfassungsgruppenreferenz im $ -Te-Ersatz verwendet wird. Der Referenzinhalt wird jedoch nicht korrekt verarbeitet, was dazu führt, dass die ersetztes Zeichenfolge anscheinend Array-Informationen enthält.
Ein weiteres häufiges Missverständnis ist, dass reguläre Erfassungsgruppen ( z .
Angenommen, Sie haben die folgende Zeichenfolge:
<Code> $ prov. "Willkommen bei M66.net, ein Testzeichenfolge."; </code>Ich möchte mb_eregi_replace verwenden, um den Domänennamen als Beispiel zu ersetzen. Die Schreibmethode lautet wie folgt:
<Code> $ result = mb_eregi_replace ('m66 \ .net', 'example.com', $ subjekt); Echo $ Ergebnis; </code>Ausgabe:
<Code> Willkommen zu Beispielez. </code>Was hier zurückgegeben wird, ist der String -Typ, und $ Ergebnis ist kein Array.
Der Array -Typ wird in der Ersatzzeichenfolge verwendet:
Wenn $ Ersatz in ein Array und keine Zeichenfolge übergeben wird, wird ein Fehler verursacht. Dies meldet jedoch normalerweise einen Fehler und gibt eine Zeichenfolge, die wie ein Array aussieht, nicht stillschweigend zurück.
Missverständnis der im Ersatzinhalt verwendeten Capture -Gruppe:
Angenommen, Sie verwenden:
<code> $ result = mb_eregi_replace ('(m66 \ .net)', '$ 1.com', $ subjekt); </code>Hier ist 1 $ 1 eine Referenzgruppe für die Erfassungsgruppe, aber wenn sie nicht richtig analysiert wird, kann dies dazu führen, dass die ersetztes Zeichenfolge zum buchstäblichen $ 1.com wird, sodass die Menschen fälschlicherweise denken, dass es sich um ein Array oder eine spezielle Struktur handelt.
MB_Eregi_Replace -Rückgabewert ist immer eine Zeichenfolge .
Wenn Sie das Ergebnis "wie ein Array" sehen, prüfen Sie, ob die Ersatzzeichenfolge und die Eingangszeichenfolge Inhalte enthalten, die zu Verwirrung führen können.
Stellen Sie bei korrekter Verwendung von Erfassungsgruppen sicher, dass die Syntax korrekt ist, und vermeiden Sie es, unerwartete Inhalte auszugeben.
Die Verwendung von var_dump während des Debuggens kann dazu beitragen, die variablen Typen zu bestätigen.
$ result = mb_eregi_replace ($ muster, $ ersatz, $ betreffend);
Echo $ Ergebnis; // Ausgabe: Bitte besuchen Sie Beispiel.com für weitere Informationen.
?>
</code>