2010-01-23 4 views
1

J'ai un preg_replace qui supprime une partie d'une chaîne qu'il ne devrait pas supprimer. Il devrait être à la recherche de: images_client/39/structure/party-2/ Et en le remplaçant par: images_client/39/structure/xxx/ Il fait cela, mais il supprime également les images/partie de celui-ci juste avant apple_logo .jpgpreg_replace sortant une chaîne supplémentaire

<?php 
    echo '<br>-------- preg_replace on a css string with slashes ------<br>'; 
    $string='/images_client/39/structure/party-2/images/apple_logo.jpg'; 
    echo 'Before: '.$string.'<br>'; 
    print preg_replace("/images_client\/39\/structure\/(\S+)\//", "images_client/39/structure/xxx/", $string) . "\n"; 
?> 
+1

S'il vous plaît, quand vous traitez des modèles contenant des barres obliques, choisissez un séparateur de motif différent (vous pouvez choisir ce que vous voulez): tous ces '\/'font saigner les yeux. Aussi, vous pourriez envisager d'accepter quelques réponses –

Répondre

0

Essayez ceci:

preg_replace('#images_client/39/structure/[^/]+/#s', 'images_client/39/structure/xxx/'); 
+0

Merci, ça a bien fonctionné! – EricP

0

Essayez [^/] au lieu de \S:

/images_client\/39\/structure\/([^\/]+)\//