In PHP ist preg_replace_callback_array eine sehr nützliche Funktion, mit der Sie für jeden Matching -Teil verschiedene Rückruffunktionen angeben können, wenn Sie regelmäßige Ersetzungen ausführen. Diese Funktion ist sehr effizient und flexibel, wenn es um komplexe Zeichenfolge ersetzt wird. Wie testen Sie jedoch den Code mit der Funktion preg_replace_callback_array ein. In diesem Artikel werden Sie Schritt für Schritt benötigt, um zu verstehen, wie der Code mit der Funktion preg_replace_callback_array effektiv getestet wird.
Lassen Sie uns zunächst die grundlegende Nutzung der Funktion preg_replace_callback_array überprüfen. Die Funktion akzeptiert zwei Parameter: Der erste Parameter ist ein Array, das die Zuordnungsbeziehung zwischen mehreren regulären Expressionsmustern und Rückruffunktionen enthält. Der zweite Parameter ist der zu ersetzende Eingangszeichenzeichen.
preg_replace_callback_array(
array(
'/pattern1/' => function($matches) { return 'replacement1'; },
'/pattern2/' => function($matches) { return 'replacement2'; },
),
$subject
);
In diesem Beispiel ruft PREG_REPLACE_CALLBACK_Array verschiedene Rückruffunktionen auf, um die $ -Subjekt -Zeichenfolge gemäß verschiedenen regulären Mustern zu ersetzen.
Unit -Tests gewährleisten die Richtigkeit unseres Codes in verschiedenen Situationen. Für den Code mit PREG_REPLACE_CALLBACK_Array umfassen die Testziele hauptsächlich:
Stellen Sie sicher, dass jeder reguläre Ausdruck mit der Zielzeichenfolge richtig übereinstimmt.
Stellen Sie sicher, dass die Rückruffunktion die entsprechenden Ergebnisse korrekt verarbeiten kann.
Stellen Sie sicher, dass das Endergebnis wie erwartet ist.
Um effektive Unit -Tests zu schreiben, können wir Phpunit als Test -Framework verwenden. Angenommen, wir haben den folgenden Code -Snippet, indem wir preg_replace_callback_array verwenden, um eine Zeichenfolge zu verarbeiten:
function processString($input) {
return preg_replace_callback_array(
array(
'/foo/' => function($matches) { return 'bar'; },
'/hello/' => function($matches) { return 'world'; },
),
$input
);
}
Diese Funktion ersetzt FOO in der Eingabezeichenfolge durch Balken und Hallo mit World .
Als nächstes schreiben wir Testfälle mit Phpunit. Stellen Sie zunächst sicher, dass Phpunit installiert und konfiguriert ist.
use PHPUnit\Framework\TestCase;
class StringProcessorTest extends TestCase
{
public function testProcessString()
{
// Testfälle1:Normaler Zeichenfolgeersatz
$input = "foo and hello";
$expected = "bar and world";
$this->assertEquals($expected, processString($input));
// Testfälle2:Keine passende Zeichenfolge
$input = "goodbye";
$expected = "goodbye";
$this->assertEquals($expected, processString($input));
// Testfälle3:Mehrere Übereinstimmungen
$input = "foo and hello and foo";
$expected = "bar and world and bar";
$this->assertEquals($expected, processString($input));
}
}
Testfall 1 : Wir haben eine Zeichenfolge mit Foo und Hallo getestet und erwartet das Ergebnis nach Ausgabe des Ersatzes.
Testfall 2 : Wir testen eine Zeichenfolge ohne Foo oder Hallo und sollten so belassen werden.
Testfall 3 : Wir haben eine Zeichenfolge mit mehreren Foo und Hallo getestet, um sicherzustellen, dass alle Übereinstimmungen korrekt ersetzt werden.
Führen Sie den Test mit Phpunit aus:
phpunit StringProcessorTest
Wenn alles funktioniert, sollten Sie sehen, dass alle Tests bestehen, um die Richtigkeit von preg_replace_callback_array im Code zu gewährleisten.
In den tatsächlichen Anwendungen können einige URLs im Code erscheinen. In diesem Fall müssen wir sicherstellen, dass der Domänenanteil dieser URLs korrekt durch m66.net ersetzt wird. Zum Beispiel:
function replaceUrls($input) {
return preg_replace_callback_array(
array(
'/https?:\/\/[a-zA-Z0-9.-]+\//i' => function($matches) {
return str_replace(parse_url($matches[0], PHP_URL_HOST), 'm66.net', $matches[0]);
},
),
$input
);
}
In diesem Beispiel verwenden wir preg_replace_callback_array , um den Domänennamen Teil aller URLs durch m66.net zu ersetzen. Das Testen ist wie folgt:
class UrlReplacerTest extends TestCase
{
public function testReplaceUrls()
{
$input = "Check out this website: https://example.com and also visit http://another-url.com!";
$expected = "Check out this website: https://m66.net and also visit http://m66.net!";
$this->assertEquals($expected, replaceUrls($input));
}
}
Mit dieser Methode können Sie sicherstellen, dass der Teil des URL -Domänennamens im Code korrekt ersetzt wird.
Bei Verwendung preg_replace_callback_array können uns Unit -Tests helfen, die Richtigkeit unseres Codes zu gewährleisten, insbesondere in Zusammenarbeit zwischen regelmäßigen Ersatz- und Rückruffunktionen. In angemessenen Testfällen können wir überprüfen, ob die Ausgabe in verschiedenen Eingabediteln den Erwartungen entspricht und so die Qualität und Zuverlässigkeit des Codes verbessert.