<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 这部分内容与文章正文无关,可以是任意PHP代码示例</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">dummyFunction</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">"Hello, this is a dummy function."</span></span><span>;
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">dummyFunction</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<preg_replace_callback_array中常见的正则表达式写法错误有哪些?避免这些坑></p>
<p>在PHP中,<code>preg_replace_callback_array
Denken Sie immer daran, dem regulären Ausdruck einen Trennzeichen hinzuzufügen und vor und nach dem Separator zu entsprechen.
Viele Sonderzeichen in regulären Ausdrücken müssen entkommen werden. Besonders beim Schreiben von Stammgästen in PHP -Zeichenfolgen muss auch der Backslash selbst entkommen, was zu einem doppelten Fluchtfehler führt.
</span><span><span class="hljs-variable">$patterns</span></span><span> = [
</span><span><span class="hljs-string">'/\\d+/'</span></span><span> => </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) { </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]; }, </span><span><span class="hljs-comment">// richtig,PHPIn String\\Repräsentiert eine einzelne\</span></span><span>
</span><span><span class="hljs-string">'/\d+/'</span></span><span> => </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) { </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]; }, </span><span><span class="hljs-comment">// richtig,单引号In String\Direkt effektiv</span></span><span>
</span><span><span class="hljs-string">"/\d+/"</span></span><span> => </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) { </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]; }, </span><span><span class="hljs-comment">// richtig,双引号In String\dKann identifiziert werden</span></span><span>
</span><span><span class="hljs-string">"/\d+/"</span></span><span> => </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) { </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]; }, </span><span><span class="hljs-comment">// Häufige Fehler werden geschrieben als "/\\d+/" Verursacht einen passenden Fehler</span></span><span>
];
Vermeiden Sie: Verwenden Sie einzelne Zitate, um reguläre Ausdrücke zu wickeln, die Komplexität der Flucht zu reduzieren oder zwischen Doppelzitaten und einzelnen Zitaten sorgfältig zu unterscheiden.
Viele Entwickler möchten die Anzahl der Gruppen reduzieren, wenn sie übereinstimmen, oder benannte Gruppen, aber nicht standardisiertes Schreiben verursacht einen Übereinstimmungsfehler.
</span><span><span class="hljs-comment">// Nicht erfasste Gruppierung</span></span><span>
</span><span><span class="hljs-string">'/foo(?:bar)/'</span></span><span> </span><span><span class="hljs-comment">// richtig,(?:)Zeigt eine nicht erfasste Gruppierung an</span></span><span>
</span><span><span class="hljs-string">'/foo(bar)/'</span></span><span> </span><span><span class="hljs-comment">// Gruppierung erfassen</span></span><span>
</span><span><span class="hljs-comment">// Namensgruppierung,richtig写法:</span></span><span>
</span><span><span class="hljs-string">'/foo(?P<name>bar)/'</span></span><span>
</span><span><span class="hljs-comment">// Falsches Schreiben:</span></span><span>
</span><span><span class="hljs-string">'/foo(?<name>bar)/'</span></span><span> </span><span><span class="hljs-comment">// Obwohl einigePHPVersionsunterstützung,Aber nichtPCREStandard,Mögliche Kompatibilität</span></span><span>
Vermeidungsmethode: Es wird empfohlen, die Standard -Gruppierungssyntax zu verwenden (? P.? P.
Beim Schreiben komplexer Regeln sind Syntaxprobleme wie Nichtübereinstimmung und Fehler in der Quantifizierernutzung auftreten, was zu direkten Fehlern oder Fehlanpassungen auf preg_replace_callback_array führt.
</span><span><span class="hljs-variable">$patterns</span></span><span> = [
</span><span><span class="hljs-string">'/(foo(bar/'</span></span><span> => </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) { </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]; }, </span><span><span class="hljs-comment">// Klammermismatch,Einen Fehler melden</span></span><span>
</span><span><span class="hljs-string">'/foo+/'</span></span><span> => </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) { </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]; }, </span><span><span class="hljs-comment">// Falsche Verwendung von Quantifizierern,+ Angewendet in foo Verursacht mehrdeutige Bedeutung</span></span><span>
];
Vermeiden Sie: Verwenden Sie IDE- oder Online -Tools, um regelmäßige Ausdrücke zu überprüfen, um die korrekte Syntax sicherzustellen.
Das erwartete Übereinstimmungsergebnis der Rückruffunktion steht im Widerspruch zu der regulären Ausdrucksdefinition, was dazu führt, dass der Index oder die in der Rückruf zugegriffenen Gruppierung nicht vorhanden ist.
</span><span><span class="hljs-variable">$patterns</span></span><span> = [
</span><span><span class="hljs-string">'/(foo)(bar)/'</span></span><span> => </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) {
</span><span><span class="hljs-comment">// $matches[1] Ja foo, $matches[2] Ja bar</span></span><span>
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>]; </span><span><span class="hljs-comment">// Nicht existierender Index,Einen Fehler melden</span></span><span>
}
];
Vermeiden Sie: Bestätigen Sie beim Schreiben eines Rückrufs den Gruppennamen oder den Index der regulären Erfassung, um den Zugriff auf undefinierte Elemente zu verhindern.
Beispielsweise ignorieren Sie Fall, Einzellinienmodus, Multi-Line-Modus usw., was dazu führt, dass das Matching-Ergebnis nicht den Erwartungen erfüllt.
</span><span><span class="hljs-string">'/pattern/i'</span></span><span> </span><span><span class="hljs-comment">// i Zeigt an, dass der Fall ignoriert wird</span></span><span>
</span><span><span class="hljs-string">'/pattern/s'</span></span><span> </span><span><span class="hljs-comment">// s äußern . Passen Sie Newlines an</span></span><span>
</span><span><span class="hljs-comment">// 忘记加修饰符Verursacht einen passenden Fehler</span></span><span>
</span><span><span class="hljs-string">'/pattern/'</span></span><span> </span><span><span class="hljs-comment">// Fallempfindlichkeit</span></span><span>
Vermeiden Sie: Fügen Sie Modifikatoren vernünftigerweise entsprechend Ihren Bedürfnissen hinzu.
Bei der Verwendung von preg_replace_callback_array zum Verarbeiten von Zeichenfolgen ist es wichtig, den regulären Ausdruck korrekt zu schreiben. Zu den häufigen Fehlern gehören fehlende Grenzwerte, Fluchtfehler, Schreiben des unregelmäßigen Gruppierens, Syntaxfehler, Rückrufparameterfehler und das Ignorieren von Modifikatoren. Die Entwicklung der Angewohnheit, vor dem Schreiben reguläre Ausdrücke separat zu testen, und die Verwendung von Debugging -Tools zur Überprüfung der Gruppierung und Übereinstimmungsergebnisse kann diese Fallstricke effektiv vermeiden und die Code -Robustheit verbessern.
Ich hoffe, dieser Artikel hilft Ihnen, bei Verwendung preg_replace_callback_array zu vermeiden, dass regelmäßige Ausdrucksfehler eingeschrieben werden und zuverlässigerer und effizienterer PHP -Code schreiben.