2010-03-10 6 views
3

Je me demandais comment je pourrais remplacer la deuxième instance d'une chaîne dans une chaîne en php, comme suit:Remplacer deuxième instance de chaîne

a - b - c 

Lorsqu'il woulld ajouter un espace supplémentaire après la seconde « - » mais seulement si elle trouve 2.

Répondre

7
$finds = explode('-', "a - b - c"); 
if (count($finds) == 3) { 
    $finds[2] = " {$finds[2]}"; 
} 

$finds = implode('-', $finds); 
+1

+1 - Publié la même réponse (maintenant supprimé), mais trop tard :). Vous voulez cependant corriger votre dernière ligne. comme, $ result = implode ("-", $ find); –

+0

haha ​​oui, j'ai déjà eu à modifier bc j'ai manqué le 2ème arg dans exploser lol. – Seaux

0

Sous-chaîne la chaîne en commençant à l'index du premier tiret en utilisant strpos puis faites un str_replace sur le reste de la chaîne. Concaténer les deux ensemble.

1
$str ="a - b - c";  
if (substr_count($str,"-")>2){ 
    print preg_replace("/^(.*)-(.*)-(.*)/","\\1-\\2- \\3",$str); 
} 
+0

cela ne fonctionne pas s'il y a plus de 3 – Seaux

+0

puis ajoutez un chèque pour cela. – ghostdog74

1
**// User Function to replace string by Occurance** 

function str_occ_replace($from,$to,$subject,$occ){ 
    $myArray = explode($from,$subject); 
    print_r($myArray); 
    $mystring = ''; 
    $index = 1; 
    foreach($myArray as $ele){ 

     if($index !== $occ AND $index !== $arraySize) 
      $mystring .= $ele.$from; 
     else if($index !== $arraySize) 
      $mystring .= $ele.$to; 
     $index++; 
    } // End of Foreach 
    return $mystring; 
} // End of Function 
+0

Ce code fonctionne parfaitement. BOL. –