2010-09-05 7 views
0

Même par exemple, j'ai ceci:expressions régulières - Insérer plusieurs fois

Hello world!! 
Hello all! 

Je veux remplacer chaque « ! » avec une période par exemple. Avec PHP. Comment ferais-je cela?

+0

Voulez-vous remplacer plusieurs points d'exclamation par une période unique ou souhaitez-vous les remplacer par le même nombre de points? – haydenmuhl

+0

Avec le même nombre de périodes. – Q2Ftb3k

Répondre

0
preg_replace('#\!+#s', 'what_ever_you_want', $subject) 
+0

Désolé pour la question, mais pourquoi avez-vous utilisé ces symboles # et s? – Centurion

+0

Le premier caractère d'une expression rationnelle PCRE est le délimiteur, dans ce cas le signe dièse. Après le délimiteur de fin peut être placé un certain nombre de modificateurs qui changent comment fonctionne l'expression. Dans ce cas, le modificateur 's' est utilisé. – erisco

+0

# est délimiteur, vous pouvez utiliser ce que vous voulez comme délimiteur (sauf les métacaractères regex je pense, mais je ne suis pas sûr) et "s" est un modificateur qui le rend compatible multi-ligne. – WhoSayIn

0

J'ai compris. Je ne peux pas croire que je n'ai pas vu ça avant. ! est un métacaractère donc j'ai besoin d'un '\' avant. Voilà pourquoi ça ne fonctionnait pas. Merci.

+0

'!' N'est pas un métacaractère. 'preg_replace ('/! /', '.', 'Bonjour monde !!');' => 'Hello world..' –

5

Ne pensez-vous pas que str_replace suffirait?

$str = str_replace('!','.',$str); 
+0

+1 Pas besoin de regex ici. –

+0

Non, je dois faire regex pour d'autres opérations. – Q2Ftb3k

+2

Je ne vois toujours pas de raison d'utiliser regex, étant donné votre commentaire "Avec le même nombre de périodes". Notez que str_replace peut gérer plus d'un caractère – Robus