Aktueller Standort: Startseite> Neueste Artikel> Wie vermeiden Sie, dass Arrays aufgrund des Missbrauchs der Exploit -Funktion nicht Grenzen sind? Praktische Lösungen und Präventionstechniken

Wie vermeiden Sie, dass Arrays aufgrund des Missbrauchs der Exploit -Funktion nicht Grenzen sind? Praktische Lösungen und Präventionstechniken

gitbox 2025-07-12

1. Grundnutzung von Exploit () -Funktion

Lassen Sie uns zunächst die grundlegende Nutzung der Funktion Exploit () überprüfen:

 <span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-title function_ invoke__">explode</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$delimiter</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$limit</span></span><span> = PHP_INT_MAX)
</span></span>
  • $ trenner : Zeichenfolge, die als Trennzeichen verwendet wird

  • $ String : Die Zielzeichenfolge, die aufgeteilt werden soll

  • $ Limit : Optionaler Parameter, begrenzt die Anzahl der zurückgegebenen Array -Elemente. Die Standardeinstellung ist PHP_INT_MAX, dh alle geteilten Elemente zurück.

Zum Beispiel:

 <span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"apple,banana,orange"</span></span><span>;
</span><span><span class="hljs-variable">$array</span></span><span> = </span><span><span class="hljs-title function_ invoke__">explode</span></span><span>(</span><span><span class="hljs-string">","</span></span><span>, </span><span><span class="hljs-variable">$str</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span></span>

Das Ausgangsergebnis ist:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">0</span></span><span>] =&gt; apple
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; banana
    [</span><span><span class="hljs-number">2</span></span><span>] =&gt; orange
)
</span></span>

Es erscheint sehr einfach, aber wenn die in exploit () übergebenen Parameter unangemessen sind oder das zurückgegebene Array nicht ordnungsgemäß verarbeitet wird, kann dies zu schwer zu kennenden Fehlern führen, insbesondere zu dem Problem des Arrays außerhalb der Grenzen.


2. Potenzielles Risiko für Array -Kreuzungsgrenzen

Bei Verwendung der Funktion exploit () spiegelt sich das Problem von Array außerhalb der Bounds normalerweise in den folgenden Situationen wider:

  1. Die Eingangszeichenfolge ist leer oder es gibt keinen Separator <br> Wenn $ String eine leere Zeichenfolge ist oder der Trennzeichen in der Zeichenfolge nicht vorhanden ist, gibt exploit () ein Array zurück, das die ursprüngliche Zeichenfolge enthält. Wenn das Programm zu diesem Zeitpunkt versucht, auf nicht existierende Array-Elemente zuzugreifen, tritt ein Array-Fehler auf, das außerhalb der Untergrenze auftritt.

    Zum Beispiel:

     <span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>;
    </span><span><span class="hljs-variable">$array</span></span><span> = </span><span><span class="hljs-title function_ invoke__">explode</span></span><span>(</span><span><span class="hljs-string">","</span></span><span>, </span><span><span class="hljs-variable">$str</span></span><span>);
    </span><span><span class="hljs-comment">// Ausgabe:Array([0] =&gt; '')</span></span><span>
    </span></span>

    Wenn Sie versuchen, auf $ Array [1] zuzugreifen, werden Sie auf einen Fehler stoßen.

  2. Verwenden Sie den unangemessenen Parameter $ limit
    Exploit () ermöglicht auch die Anzahl der geteilten Array -Elemente, die durch den Parameter $ Limit gesteuert werden. Wenn der angegebene $ Grenzwert unangemessen ist, kann er dazu führen, dass die zurückgegebene Array -Länge mit dem erwarteten Widerspruch nicht im Widerspruch steht, was zu dem Problem des Arrays aus den Grenzen führt.


3.. Häufige Tipps, um Arrays zu vermeiden, Grenzen überschreiten

Um zu vermeiden, dass das Array durch den Missbrauch der Exploit () -Funktion durchquert wird, können die folgenden wirksamen vorbeugenden Maßnahmen ergriffen werden:

3.1. Überprüfen Sie, ob der Trennzeichen existiert

Überprüfen Sie vor dem Aufrufen der Funktion exploit () , ob die Zielzeichenfolge den angegebenen Trennzeichen enthält. Wenn in der Zeichenfolge kein Trennzeichen vorhanden ist, geben Sie einfach das Array der ursprünglichen Zeichenfolge zurück. Dies kann das Problem der Array -Kreuzungsgrenzen effektiv vermeiden.

 <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$delimiter</span></span><span>) !== </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-variable">$array</span></span><span> = </span><span><span class="hljs-title function_ invoke__">explode</span></span><span>(</span><span><span class="hljs-variable">$delimiter</span></span><span>, </span><span><span class="hljs-variable">$str</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-variable">$str</span></span><span>]; </span><span><span class="hljs-comment">// Wenn es keinen Trennzeichen gibt,Gibt ein Array zurück, das die ursprüngliche Zeichenfolge enthält</span></span><span>
}
</span></span>

3.2. Legen Sie angemessene Parameter von $ limit

Wenn Sie das Split -Array auf eine bestimmte Länge beschränken möchten, können Sie den Parameter $ limit nach bestimmten Anforderungen vernünftigerweise festlegen. Wenn Sie die Array -Länge nicht einschränken müssen, ist es besser, $ Limit auf den Standard -PHP_INT_MAX festzulegen.

 <span><span><span class="hljs-variable">$limit</span></span><span> = </span><span><span class="hljs-number">3</span></span><span>; </span><span><span class="hljs-comment">// Stellen Sie die maximale Anzahl von Elementen nach der Teilung fest</span></span><span>
</span><span><span class="hljs-variable">$array</span></span><span> = </span><span><span class="hljs-title function_ invoke__">explode</span></span><span>(</span><span><span class="hljs-string">","</span></span><span>, </span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$limit</span></span><span>);
</span></span>

3.3. Verwenden Sie die Funktion count (), um die Arraylänge zu überprüfen

Verwenden Sie beim Zugriff auf Split -Array -Elemente zunächst die Funktion count (), um die tatsächliche Länge des Arrays zu überprüfen, um auf Elemente zuzugreifen, die außerhalb des Bereichs liegen.

 <span><span><span class="hljs-variable">$array</span></span><span> = </span><span><span class="hljs-title function_ invoke__">explode</span></span><span>(</span><span><span class="hljs-string">","</span></span><span>, </span><span><span class="hljs-variable">$str</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">count</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>) &gt; </span><span><span class="hljs-number">2</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$array</span></span><span>[</span><span><span class="hljs-number">2</span></span><span>]; </span><span><span class="hljs-comment">// Sichern Sie den Zugriff auf Array -Elemente</span></span><span>
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Unzureichende Array -Elemente"</span></span><span>;
}
</span></span>

3.4. Verwenden Sie die Funktion mit leeren (), um zu überprüfen, ob das Array leer ist

Um Fehler zu vermeiden, da das Array leer ist, können Sie die Funktion leer () verwenden, um zu überprüfen, ob das Array einen Wert hat.

 <span><span><span class="hljs-variable">$array</span></span><span> = </span><span><span class="hljs-title function_ invoke__">explode</span></span><span>(</span><span><span class="hljs-string">","</span></span><span>, </span><span><span class="hljs-variable">$str</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>)) {
    </span><span><span class="hljs-comment">// Verarbeitungsarrays</span></span><span>
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Das Array ist leer"</span></span><span>;
}
</span></span>

4. Andere Fähigkeiten zur fortgeschrittenen Prävention

Zusätzlich zu den regulären Präventionstechniken können Sie auch einige erweiterte Methoden anwenden, um die Robustheit Ihres Codes zu verbessern:

4.1. Custom Function Incapsulation Exploit ()

Um das potenzielle Risiko einer wiederholten Überprüfung von Exploit () zu vermeiden, kann es in eine benutzerdefinierte Funktion eingekapselt werden, und die erforderliche Inspektion und Verarbeitung werden innerhalb der Funktion durchgeführt.

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">safe_explode</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$delimiter</span></span></span><span>, </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-variable">$limit</span></span><span> = PHP_INT_MAX) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>)) {
        </span><span><span class="hljs-keyword">return</span></span><span> [];
    }
    
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-variable">$delimiter</span></span><span>) === </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-keyword">return</span></span><span> [</span><span><span class="hljs-variable">$string</span></span><span>];
    }
    
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">explode</span></span><span>(</span><span><span class="hljs-variable">$delimiter</span></span><span>, </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-variable">$limit</span></span><span>);
}

</span><span><span class="hljs-comment">// Benutzerdefinierte benutzerdefinierte safe_explode Funktion</span></span><span>
</span><span><span class="hljs-variable">$array</span></span><span> = </span><span><span class="hljs-title function_ invoke__">safe_explode</span></span><span>(</span><span><span class="hljs-string">","</span></span><span>, </span><span><span class="hljs-variable">$str</span></span><span>);
</span></span>

4.2. Verwenden regelmäßiger Ausdrücke

Bei einigen komplexen Anforderungen an die String -Segmentierung bieten regelmäßige Ausdrücke eine flexiblere Lösung. Die Funktion preg_split () kann anstelle von exploit () verwendet werden, wodurch bei der Aufteilung mehr übereinstimmende Regeln und Optionen unterstützt werden, wodurch potenzielle Fehler vermieden werden.

 <span><span><span class="hljs-variable">$array</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_split</span></span><span>(</span><span><span class="hljs-string">"/,/"</span></span><span>, </span><span><span class="hljs-variable">$str</span></span><span>);
</span></span>