Erstens ist es sehr wichtig, den grundlegenden Unterschied zwischen Doppelzitaten und einzelnen Zitaten in PHP zu verstehen:
Doppelzitate : In Doppelzitaten entkommt PHP bestimmten spezifischen Zeichen wie Variablen ( $ Variable ) und Fluchtzeichen (z. B. \ n , \ t usw.).
Einzelne Zitate : Die Saiten in einzelnen Zitaten analysieren wenig, außer dass selbst einzelne Zitate ( \ ' ) und Backslashes ( \\ ) entkommen. Daher werden die Inhalte in einzelnen Zitaten als wörtliche Zeichenfolgen verarbeitet.
Dieser Unterschied ist besonders wichtig bei der Analyse von String im INI -Format, insbesondere für Zeichenfolgenwerte und Schlüsselnamen.
Eines der häufigsten Probleme bei der Verwendung von Parse_ini_String ist die falsche Verwendung von doppelten und einzelnen Zitaten, insbesondere wenn die Werte in der INI -Datei selbst Zitate enthalten. Zum Beispiel:
<span><span><span class="hljs-attr">key</span></span><span> = </span><span><span class="hljs-string">"This is a \"quoted\" value"</span></span><span>
</span></span>
In diesem Beispiel analysiert Parse_ini_string diesen Zeichenfolge mit dem Wert des Tastens, der darauf eingestellt ist, ein "zitierter" Wert , und die Zitate in doppelten Zitaten sind korrekt in buchstäbliche Zitate ( " ). Wenn wir diesen Zitaten jedoch nicht korrekt entkommen, kann dies zu Parsenfehlern führen oder die erwarteten Ergebnisse nicht erfüllen.
Die Werte enthalten unabgeordnete Doppelzitate : Wenn Sie Doppelzitate in Zeichenfolgen verwenden, müssen Sie sicherstellen, dass alle doppelten Zitatzeichen korrekt entkommen werden. Wenn es keine Flucht gibt, beendet Parse_ini_string die Zeichenfolge falsch, was zu einer unvollständigen Parsen führt.
Fehlerdemonstration:
<span><span><span class="hljs-attr">key</span></span><span> = </span><span><span class="hljs-string">"This is a "</span></span><span>quoted</span><span><span class="hljs-string">" string"</span></span><span>
</span></span>
Der obige Code führt dazu, dass das Parsen fehlschlägt, da das zweite Doppelzitat nicht entkommen wird, und Parse_ini_String wird glauben, dass die Zeichenfolge beendet ist, nachdem dies a .
Richtige Demonstration:
<span><span><span class="hljs-attr">key</span></span><span> = </span><span><span class="hljs-string">"This is a \"quoted\" string"</span></span><span>
</span></span>
In diesem Beispiel haben wir den doppelten Zitaten korrekt entkommen, um sicherzustellen, dass bei der Parsen kein Fehler vorliegt.
Werte enthalten Sonderzeichen : Wenn Zeichenfolgen andere Sonderzeichen (z. B. Newlines, Registerkarten usw.) enthalten, sind doppelte Zitate erforderlich und stellen sicher, dass diese Zeichen korrekt entkommen werden.
Beispiel:
<span><span><span class="hljs-attr">key</span></span><span> = </span><span><span class="hljs-string">"This is a string\nwith a newline"</span></span><span>
</span></span>
Nach der Parsen enthält die Zeichenfolge ein tatsächliches Newline -Zeichen.
Im Vergleich zu doppelten Zitaten sind einzelne Zitate in INI -Formaten normalerweise einfacher zu verwenden, da sie keine Variablen oder Fluchtzeichen in sie analysieren. Probleme können jedoch auch auftreten, wenn einzelne Zitate zur Surround -Strings verwendet werden.
Nicht geeignet für Werte mit Leerzeichen : Wenn eine Zeichenfolge Leerzeichen oder Sonderzeichen enthält, sollte sie von Doppelzitaten umgeben sein. Wenn Sie fälschlicherweise einzelne Zitate verwenden, um eine Zeichenfolge mit Leerzeichen beizulegen, kann dies zu einer falschen Parsen führen.
Fehlerdemonstration:
<span><span><span class="hljs-attr">key</span></span><span> = </span><span><span class="hljs-string">'This is an invalid value'</span></span><span>
</span></span>
In diesem Beispiel werden Zeichenfolgen, die von einzelnen Zitaten umgeben sind, als einzelne Zeichensequenz verarbeitet, wodurch einige Räume oder Sonderzeichen verloren gehen.
Richtige Demonstration:
<span><span><span class="hljs-attr">key</span></span><span> = </span><span><span class="hljs-string">"This is a valid value"</span></span><span>
</span></span>
Zeichenfolge mit einzelnen Zitaten : Wenn die Zeichenfolge einzelne Zitate enthält (z. B. das ), ist eine angemessene Flucht erforderlich.
Fehlerdemonstration:
<span><span><span class="hljs-attr">key</span></span><span> = </span><span><span class="hljs-string">'That’s a problem'</span></span><span>
</span></span>
In diesem Fall kann Parse_ini_String die Zeichenfolge falsch analysieren.
Richtige Demonstration:
<span><span><span class="hljs-attr">key</span></span><span> = </span><span><span class="hljs-string">'That\'s a problem'</span></span><span>
</span></span>
Stellen Sie die korrekte Parsen der Zeichenfolge sicher, indem Sie vor einzelnen Zitaten Backslashes hinzufügen.
Zusätzlich zu den Zeichenfolgenwerten können Schlüsselnamen auch Zitate beinhalten. In INI -Dateien müssen Schlüsselnamen normalerweise nicht von Zitaten umgeben sein. Wenn der Schlüsselname jedoch Leerzeichen oder andere Sonderzeichen (z. B. = ,: usw.) enthält, muss er von Doppelzitaten umgeben sein.
Beispiel:
<span><span><span class="hljs-attr">"key with space"</span></span><span> = </span><span><span class="hljs-string">"value"</span></span><span>
</span></span>
In diesem Fall wird der Schlüssel mit dem Speicherplatz korrekt an den Schlüsselnamen analysiert und der Wert wird an den Wert analysiert.
Wenn die Schlüsselnamen jedoch doppelte Zitate enthalten, sollten Sie sicherstellen, dass sie korrekt entkommen sind.
Fehlerdemonstration:
<span><span>"key with "quotes</span><span><span class="hljs-attr">""</span></span><span> = </span><span><span class="hljs-string">"value"</span></span><span>
</span></span>
Richtige Demonstration:
<span><span><span class="hljs-attr">"key with \"quotes\""</span></span><span> = </span><span><span class="hljs-string">"value"</span></span><span>
</span></span>