2010-11-18 7 views
0

J'ai cette chaîne:Remplacer la chaîne en php

525.294.475.215.365.745

et je dois enlever 475..and virgule. et si j'ai besoin de retirer le premier numéro, je dois supprimer également la virgule suivante, également pour la fin. Je peux faire? une expression régulière? thx

Répondre

1

est ici une expression régulière:

$s = "525,294,475,215,365,745"; 
$s = preg_replace(',?475', '', $s); 
+0

puis-je remplacer 475 avec une variable? – Ste

+0

@Ste - Vous pouvez, mais l'expression régulière proposée par Donald ne fonctionnerait pas si vous essayez de supprimer le premier élément de la liste car il n'y aurait pas de ",". Le moyen le plus sûr serait d'exploser la chaîne dans un tableau, de supprimer l'élément, puis de combiner le tableau en une chaîne. – dotariel

+1

@Ste - Vous pourriez, comme ceci: $ num = 475; $ s = preg_replace (",? $ num", '', $ s); Notez les guillemets doubles. @ XSaint32 - Le? après que la virgule le rend optionnel, il devrait donc correspondre à la fois (475) et (, 475). – Donald

0
$data = "525,294,475,215,365,745"; 

$parts = explode(',', $data); 

for ($i = 0; $i < count($parts); $i++) { 
    if ($parts[$i] == 475) { 
     unset($parts[$i]); 
    } 
} 

$newdata = join(',', $parts); 
2
$newStr = str_replace(',475', '525,294,475,215,365,745'); 

Ou le moins d'erreurs façon sujette:

$new = array(); 
$pieces = explode(',', '525,294,475,215,365,745'); 
foreach ($pieces as $piece) { 
    if ($piece != 475) { 
     $new[] = $piece; 
    } 
} 

$newStr = implode(',', $new); 
+0

est bientôt exploser b e déconseillé, je suggère d'utiliser preg_split ("/, /") à la place – mhughes

+1

@mhughes Depuis quand exploser est-il déprécié? –

+0

@Mike C. Il n'est pas encore déprécié, il est prévu (ou au moins était, après tout, la débâcle php 6). php> = 5.3.0 recommande de remplacer exploser avec preg_split – mhughes

0
<?php 
$bigString = "525,294,475,215,365,745"; 
$pos = strpos($bigString, ","); 
while($pos != false) { 
    $newString .= substr($bigString, 0, $pos); 
    $bigString = substr($bigString, $pos + 1); 
    $pos = strpos($bigString, ","); 
} 
echo $newString; 
?> 
0
function filterValue($index, &$a) 
{ 
    $key = array_search($index, $a); 
    if ($key != false) { 
     unset($a[$key]); 
    } 
} 


// Original data 
$data = "525,294,475,215,365,745"; 
$data = explode(',', $data); 

filterValue('475', $data); 
$output = implode(',', $data);