Explosion de chaînes avec plusieurs délimiteurs en PHP
Lorsque vous traitez des chaînes complexes, vous pouvez rencontrer le besoin de les exploser en utilisant plusieurs délimiteurs. Voici une exploration détaillée de ce défi, présentant une solution potentielle et une approche alternative.
Énoncé du problème
Considérez les tableaux de chaînes suivants :
<code class="php">$example = 'Appel @ Ratte'; $example2 = 'apple vs ratte';</code>
L'objectif est d'obtenir des tableaux divisés en '@' ou 'vs'.
Solution récursive personnalisée
Une approche consiste à implémenter une fonction récursive appelé multiExplode. Cette fonction prend un tableau de délimiteurs et une chaîne en entrée. Cela commence par éclater la chaîne en utilisant le premier délimiteur du tableau. S'il reste encore des délimiteurs et que le tableau résultant contient plus d'un élément, la fonction s'appelle récursivement avec les délimiteurs restants et la chaîne modifiée.
<code class="php">private function multiExplode($delimiters, $string) { $ary = explode($delimiters[0], $string); array_shift($delimiters); if ($delimiters != NULL) { if (count($ary) < 2) { $ary = $this->multiExplode($delimiters, $string); } } return $ary; }</code>
Solution alternative utilisant des expressions régulières
Une autre approche consiste à utiliser les fonctions d'expression régulière de PHP. La fonction preg_split() peut être utilisée pour diviser une chaîne à l'aide d'un modèle d'expression régulière. En créant un motif qui correspond à l'un des délimiteurs souhaités ("@" ou "vs"), vous pouvez diviser la chaîne en parties souhaitées.
<code class="php">$output = preg_split('/ (@|vs) /', $input);</code>
Les deux méthodes peuvent être utilisées pour exploser des chaînes avec plusieurs délimiteurs en PHP. Le choix de la méthode à utiliser peut dépendre des exigences spécifiques et des préférences de l'application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!