Maison >développement back-end >tutoriel php >Comment puis-je extraire efficacement des sous-chaînes entre délimiteurs en PHP ?

Comment puis-je extraire efficacement des sous-chaînes entre délimiteurs en PHP ?

DDD
DDDoriginal
2024-12-17 09:36:25846parcourir

How Can I Efficiently Extract Substrings Between Delimiters in PHP?

Recherche de sous-chaînes entre délimiteurs en PHP

Les développeurs rencontrent souvent le besoin d'extraire des sous-chaînes prises en sandwich entre des délimiteurs spécifiques. PHP offre une méthode simple pour accomplir cette tâche sans recourir à des expressions régulières complexes.

Fonction GetInnerSubstring

Pour simplifier le processus, les développeurs PHP peuvent exploiter les fonctions strpos et substr pour créer une fonction getInnerSubstring personnalisée. Voici comment cela fonctionne :

  1. Identifier les positions des délimiteurs : La fonction prend deux arguments : une chaîne ($string) et un délimiteur ($delim). Il utilise strpos pour localiser la première et la dernière occurrence du délimiteur dans la chaîne.
  2. Extraire la sous-chaîne : Une fois les positions du délimiteur identifiées, le code utilise substr pour découper la sous-chaîne souhaitée entre celles-ci. positions.
  3. Exemple d'utilisation : Pour extraire la sous-chaîne entre deux délimiteurs, appelez simplement $substring = getInnerSubstring($string, $delim). Par exemple, avec $string = "foo I wanna a cake foo", getInnerSubstring($string, "foo") renvoie " I wanna a cake ".

Extension à plusieurs délimiteurs

La fonction getInnerSubstring peut être étendue pour gérer plusieurs occurrences du même délimiteur, en les séparant dans un tableau. Voici le code modifié :

function getInnerSubstring($string, $delim) {
    $start_pos = strpos($string, $delim);
    $result = array();
    while ($start_pos !== false) {
        $end_pos = strpos($string, $delim, $start_pos + strlen($delim));
        if ($end_pos === false) break;
        $result[] = substr($string, $start_pos + strlen($delim), $end_pos - $start_pos - strlen($delim));
        $start_pos = strpos($string, $delim, $end_pos);
    }
    return $result;
}

Exemple d'utilisation :

$string = "foo I like php foo, but foo I also like asp foo, foo I feel hero  foo";

$result = getInnerSubstring($string, "foo");

print_r($result);
// Output: [" I like php ", " I also like asp ", " I feel hero "]

Cette version étendue vous permet de récupérer un tableau de sous-chaînes situées entre n'importe quel nombre d'occurrences de délimiteur .

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn