2009-10-03 10 views

Répondre

2
$output = preg_replace('/:([^ ]+):/', '!|$1|!', $input); 

Vous pouvez remplacer [^ ] avec un ensemble plus précis, en fonction de ce que vous attendez d'être entre les : s.

+0

Merci, fonctionne très bien –

+0

si vous voulez plus d'un mot entre les deux points à remplacer comme ça, utilisez le code de Gumbo (ou remplacez [^] 'par' [^:] ') –

2

Essayez ceci:

$str = preg_replace('/:([^:]+):/', '!|\\1|!', $str); 
0

Cela dépend si un espace est autorisé entre les deux-points. Si ce n'est pas:

$out = preg_replace('!:([^ ]+):!', '!|$1|!', $in); 

est bien. Vous pouvez également envisager d'utiliser une expression non gourmand à la place:

$out = preg_replace('!:(.+?):!', '!|$1|!', $in); 

Voici une autre option:

$out = preg_replace('!:([^:]+):!', '!|$1|!', $in);