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
Libérer: 2025-01-01 07:04:09
original
328 Les gens l'ont consulté

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);
}
Copier après la connexion

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)
Copier après la connexion

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;
}
Copier après la connexion

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'])
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal