Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich in PHP zitierte Teilzeichenfolgen extrahieren und dabei maskierte Anführungszeichen ignorieren?

Wie kann ich in PHP zitierte Teilzeichenfolgen extrahieren und dabei maskierte Anführungszeichen ignorieren?

Barbara Streisand
Barbara StreisandOriginal
2024-11-29 12:54:17757Durchsuche

How Can I Extract Quoted Substrings in PHP, Ignoring Escaped Quotes?

Escaped-Anführungszeichen in PHP-Regex ausschließen

In PHP erfordert das Extrahieren von Teilzeichenfolgen, die in einfache oder doppelte Anführungszeichen eingeschlossen sind, sorgfältige Beachtung der Escape-Sequenzen. Um maskierte Anführungszeichen innerhalb der übereinstimmenden Zeichenfolge zu ignorieren, können wir erweiterte reguläre Ausdrücke verwenden.

Bedenken Sie den folgenden Code:

$code = preg_replace_callback('/"(.*?)"/', array(&$this, '_getPHPString'), $code);
$code = preg_replace_callback("#'(.*?)'#", array(&$this, '_getPHPString'), $code);

Diese regulären Ausdrücke gleichen Teilzeichenfolgen zwischen Anführungszeichen ab, schließen jedoch maskierte Anführungszeichen nicht aus . Um dieses Problem zu lösen, verwenden wir umfassendere Regex-Muster:

Empfohlene Regexes:

  • Double-Quoted Teilzeichenfolgen:

    "[^"\\]*(?:\\.[^"\\]*)*"/s
  • Teilzeichenfolgen in einfachen Anführungszeichen:

    /'[^'\\]*(?:\\.[^'\\]*)*'/s

Diese regulären Ausdrücke ermöglichen Folgendes alle nicht maskierten Zeichen, einschließlich maskierter Zeichen (z. B. „n“ und „t“), und Escape-Escape-Sequenzen ("").

Erklärung:

  • [^"\\]* entspricht null oder mehr Nicht-Anführungszeichen oder Backslash-Zeichen.
  • (?:\\.[^"\\]*)* entspricht einer beliebigen Anzahl von Escapezeichen, gefolgt von Nicht-Anführungszeichen oder Backslash Zeichen.
  • s Modifikator ermöglicht den einzeiligen Abgleich, der für mehrere Zeilen erforderlich ist.

Durch die Einbindung dieser regulären Ausdrücke können Sie Teilzeichenfolgen, die Escape-Zeichen in Anführungszeichen enthalten, genau extrahieren .

Das obige ist der detaillierte Inhalt vonWie kann ich in PHP zitierte Teilzeichenfolgen extrahieren und dabei maskierte Anführungszeichen ignorieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn