2010-02-03 8 views
100

Comment couper une partie d'une chaîne, et l'enregistrer dans une chaîne particulière dans MySQL en utilisant PHP?Comment supprimer une partie d'une chaîne?

chaîne Exemple: "REGISTER 11223344 here"

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

+0

De quel langage de programmation s'agit-il? –

+23

dit PHP dans le post. –

+1

@siddharth - quelle sortie voulez-vous? –

Répondre

19

en supposant 11223344 n'est pas constante

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

Cela lui va '11223344', qui est (je pense) l'inverse de ce qu'il veut. –

+1

Comment ça? Il désactive l'index de tableau qui contient * "11223344". –

+1

J'ai fait les ajustements après les commentaires de Dominic. – ghostdog74

131

Si vous ciblant spécifiquement "11223344", puis utilisez str_replace:

echo str_replace("11223344", "", "REGISTER 11223344 here"); 
14

Effectuez les opérations suivantes

$string = 'REGISTER 11223344 here'; 

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

Ce renverrait "REGISTERhere"

ou

$string = 'REGISTER 11223344 here'; 

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

Ce serait revenir "Inscrivez-vous ici"

+3

Ne renverra-t-il pas "REGISTER__here", avec deux espaces (pensez souligner comme espaces, le commentaire ne me permettra pas deux espaces suivants)? Beacuse des espaces avant et après le "(. *)". – TechNyquist

5

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

REMARQUE: index pour une chaîne commence par 0.

78

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

str_replace($search, $replace, $subject) 

Ainsi, vous pouvez écrire le Code comme:

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

Si vous avez besoin une meilleure correspondance via des expressions régulières, vous pouvez utiliser preg_replace().

+1

Si on a besoin de regex correspondant, il y a aussi preg_replace() http://us2.php.net/manual/fr/function.preg-replace.php –

5

Lorsque vous avez besoin règle de correspondance basé, vous devez utiliser regex

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

qui correspondent à la première série de chiffres, donc si vous devez être essayer plus précis:

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

preg_replace() serait beaucoup plus facile non? http://us2.php.net/manual/fr/function.preg-replace.php –

+0

@ElijahLynn replace vous oblige à supprimer des choses, les changements futurs ou le bruit se briserait. Faire cela via _replace mais _match continuerait à fonctionner. – TravisO

-1

si vous voulez supprimer la partie de la chaîne de chaîne donnée cela pourrait vous aider à

chop($string,'part_of_string'); 
+4

'chop' est un alias de' rtrim', ce qui n'est pas le cas - voir http://php.net/rtrim. –

+0

Oui, ça ne marchera pas. str_replace() est probablement le plus propre. http://stackoverflow.com/a/2192329/292408 –

0

Vous pouvez le faire aussi, si vous aimez d'autres façons ...

function str_substract($remove, $subject){ 
    $strpos = strpos($subject, $remove); 
    return substr($subject, 0, $strpos) . substr($subject, $strpos + strlen($remove)); 
} 

$str = "Hello, world. This is amazing"; 
print str_substract('rld', $str); 

/* Outputs: */ 
"Hello, wo. This is amazing" 
0

Dynamiquement, si vous souhaitez supprimer une partie (s) à partir d'un indice fixe (s) 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). 
*/ 
function remove_from_str($index, string $str, 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(1, "REGISTER 11223344 here"); 
// Output: REGISTER here 

Un de ses usages est d'exécuter des commandes dont vous connaissez la structure.

Questions connexes