Maison >développement back-end >tutoriel php >Comment extraire des sous-chaînes en PHP en utilisant différents types de délimiteurs ?

Comment extraire des sous-chaînes en PHP en utilisant différents types de délimiteurs ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-01 07:04:09281parcourir

How to Extract Substrings in PHP Using Different Delimiter Types?

Détermination des sous-chaînes en PHP

En PHP, l'obtention de sous-chaînes dans des délimiteurs spécifiés peut être obtenue en utilisant diverses méthodes. Par exemple, si les délimiteurs de démarcation sont identiques aux deux extrémités (par exemple, [foo] et [/foo]), l'approche suivante suffira :

function get_string_between($string, $start, $end) {
    $string = ' ' . $string;
    $ini = strpos($string, $start);
    if ($ini == 0) {
        return '';
    }
    $ini += strlen($start);
    $len = strpos($string, $end, $ini) - $ini;
    return substr($string, $ini, $len);
}

Pour illustrer, considérons l'exemple suivant :

$fullstring = 'this is my [tag]dog[/tag]';
$parsed = get_string_between($fullstring, '[tag]', '[/tag]');
echo $parsed; // (result = dog)

De plus, si les délimiteurs sont uniques (par exemple, [foo] et [/foo2]), une fonction modifiée peut être employé :

function get_inner_substring($str, $delim) {
    $results = array();
    $delim_len = strlen($delim);
    $pos = strpos($str, $delim);
    while ($pos !== false) {
        $pos_end = strpos($str, $delim, $pos + $delim_len);
        if ($pos_end !== false) {
            $results[] = substr($str, $pos + $delim_len, $pos_end - $pos - $delim_len);
            $pos = strpos($str, $delim, $pos_end + $delim_len);
        } else {
            break;
        }
    }
    return $results;
}

Grâce à cette fonction, plusieurs sous-chaînes peuvent être extraites d'une chaîne séparées par différents délimiteurs :

$string = " foo I like php foo, but foo I also like asp foo, foo I feel hero  foo";
$arr = get_inner_substring($string, "foo");
print_r($arr); // (result = ['I like php', 'I also like asp', 'I feel hero'])

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