web-dev-qa-db-fra.com

Comment supprimer une partie d'une chaîne?

Comment couper une partie d'une chaîne et la sauvegarder dans une chaîne particulière dans MySQL avec PHP?

Exemple de chaîne: "REGISTER 11223344 here"

Comment puis-je supprimer "11223344" de la chaîne d'exemple?

124
siddharth

Si vous ciblez spécifiquement "11223344", utilisez str_replace :

echo str_replace("11223344", "", "REGISTER 11223344 here");
172
Dominic Rodger

Vous pouvez utiliser str_replace () , défini comme suit:

str_replace($search, $replace, $subject)

Donc, vous pouvez écrire le code comme:

$subject = 'REGISTER 11223344 here' ;
$search = '11223344' ;
$trimmed = str_replace($search, '', $subject) ;
echo $trimmed ;

Si vous avez besoin d'une meilleure correspondance via des expressions rationnelles, vous pouvez utiliser preg_replace () .

94
dhorat

en supposant que 11223344 n'est pas constant

$string="REGISTER 11223344 here";
$s = explode(" ",$string);
unset($s[1]);
$s = implode(" ",$s);
print "$s\n";
21
ghostdog74

Faire ce qui suit

$string = 'REGISTER 11223344 here';

$content = preg_replace('/REGISTER(.*)here/','',$string);

Cela retournerait "REGISTERhere"

ou

$string = 'REGISTER 11223344 here';

$content = preg_replace('/REGISTER (.*) here/','',$string);

Cela retournerait "INSCRIVEZ-VOUS"

15
Roland

Lorsque vous avez besoin d'une correspondance basée sur des règles, vous devez utiliser regex

$string = "REGISTER 11223344 here";
preg_match("/(\d+)/", $string, $match);
$number = $match[1];

Cela correspondra au premier ensemble de chiffres, donc si vous avez besoin d'être plus spécifique, essayez:

$string = "REGISTER 11223344 here";
preg_match("/REGISTER (\d+) here/", $string, $match);
$number = $match[1];
6
TravisO

substr () est une fonction php intégrée qui renvoie une partie d'une chaîne . La fonction substr () prendra une chaîne en entrée, la forme d'index à l'endroit où vous souhaitez couper la chaîne. et un paramètre facultatif est la longueur de la sous-chaîne. Vous pouvez voir la documentation appropriée et un exemple de code sur http://php.net/manual/en/function.substr.php

REMARQUE: l'index d'une chaîne commence par 0.

5
Umair Jabbar
str_replace(find, replace, string, count)
  • trouver Obligatoire. Spécifie la valeur pour find
  • remplace Obligatoire. Spécifie la valeur à replace la valeur dans find
  • string Obligatoire. Spécifie la chaîne à être recherché
  • count Facultatif. Une variable qui compte le nombre de remplacements
1
Stnfordly

Dynamiquement, si vous souhaitez supprimer une ou plusieurs parties d'un ou de plusieurs index fixes d'une chaîne, utilisez cette fonction:

/*
 * Remove index/indexes from a string, delimited by a space (or something else).
 * First, divides the string by delimiter and holds divided parts as an array.
 * If $index is an array, it removes all indexes of the divided string;
 * otherwise (i.e. has an int value), it removes just that index of the string.
 * At last, it joins all string parts together and return it as a string.
 * Note: If you want to use this function in PHP5, remove scalar type hints
 * (i.e. keywords before function arguments).
 * Note: For PHP versions lower than 7.0, remove scalar type hints (i.e. the
 * types before each argument) and the return type.
 */
function remove_from_str(string $str, $index, string $delimiter = " "): string
{
    // String parts
    $strParts = explode($delimiter, $str);

    // Remove indexes from string parts
    if (is_array($index))
        foreach ($index as $i)
            $strParts[(int)$i] = null;
    else
        $strParts[(int)$index] = null;

    // Remove null values, to prevent duplicating delimiter
    $strParts = array_filter($strParts);

    // Join all parts together and return it
    return implode($delimiter, $strParts);
}

Pour votre but:

remove_from_str("REGISTER 11223344 here", 1);
// Output: REGISTER here

Un de ses usages est d’exécuter des chaînes de commande, dont vous connaissez la structure.

1
MAChitgarha