OVH Cloud OVH Cloud

exp reguliere (supprimer *)

15 réponses
Avatar
yvon.thoravallist
j'essaie de faire un convertisseur rtf->xml (sommaire)

dans le rtf il y a des \* (s'applique à tout) que je veux supprimer,
exemple :
\fcharset256\fprq2{\*\panose 02000500000000000000}Times;}{\f5\fnil\fchar
que je voudrais transformer en :
\fcharset256\fprq2{\panose 02000500000000000000}Times;}{\f5\fnil\fchar
(càd même chose en "rempaçant "\*" par "")

j'ai fais des tas d'essais avec prec[ereg]_replace mais j'obtiens tjs ca
:
...\*\panose... convertit en :
...\\panose... (donc avec deux backslah de suite...)
alors que je souhaite :
...\panose...



--
Yvon

10 réponses

1 2
Avatar
Thomas Mlynarczyk
Also sprach Yvon Thoraval:

j'essaie de faire un convertisseur rtf->xml (sommaire)

dans le rtf il y a des * (s'applique à tout) que je veux supprimer,
exemple :
fcharset256fprq2{*panose
02000500000000000000}Times;}{f5fnilfchar que je voudrais
transformer en : fcharset256fprq2{panose
02000500000000000000}Times;}{f5fnilfchar (càd même chose en
"rempaçant "*" par "")

j'ai fais des tas d'essais avec prec[ereg]_replace mais j'obtiens tjs
ca

...*panose... convertit en :

...panose... (donc avec deux backslah de suite...)
alors que je souhaite :
...panose...


T'as déjà essayé ça:
$machin = ereg_replace( "*" , "" , $machin );
?

--


Avatar
Guillaume Bouchard
Yvon Thoraval wrote:

dans le rtf il y a des * (s'applique à tout) que je veux supprimer,
exemple :


Tu veut remplacer tout les /* par rien ?

str_replace est ton amie

$str = str_replace('/*','',$str);

--
Guillaume.

Avatar
Guillaume Bouchard
Thomas Mlynarczyk wrote:

$machin = ereg_replace( "*" , "" , $machin );


Il est plus simple et rapide d'utilisé str_replace.

1) syntaxe moins lourde
2) processeur moins solicité.

--
Guillaume.

Avatar
christophe c
Thomas Mlynarczyk wrote:

T'as déjà essayé ça:
$machin = ereg_replace( "*" , "" , $machin );
?

avec sed ça ne renvoie pas le résultat escompté ...

par contre ça marche avec "[]*" ou ".*"

--
ccl.

Avatar
Nudrema
j'ai fais des tas d'essais avec prec[ereg]_replace mais j'obtiens tjs ca


il me semble que tu as dû utiliser '*' comme masque... or c'est juste
une étoile échappée, il faut toujours doubler les -> '*' devrait
mieux fonctionner...

Avatar
pcrt
Salut,

c'est normale tu remplace l'asterix par rien. Le résultat est cohérent. Vaut
mieux récupérer "*" et le remplacer par ""

voilà
pcrt

"Yvon Thoraval" a écrit dans
le message de news:
1fyt335.1bkzv6dnsma9N%
j'essaie de faire un convertisseur rtf->xml (sommaire)

dans le rtf il y a des * (s'applique à tout) que je veux supprimer,
exemple :
fcharset256fprq2{*panose 02000500000000000000}Times;}{f5fnilfchar
que je voudrais transformer en :
fcharset256fprq2{panose 02000500000000000000}Times;}{f5fnilfchar
(càd même chose en "rempaçant "*" par "")

j'ai fais des tas d'essais avec prec[ereg]_replace mais j'obtiens tjs ca
:
...*panose... convertit en :
...panose... (donc avec deux backslah de suite...)
alors que je souhaite :
...panose...



--
Yvon


Avatar
yvon.thoravallist
Guillaume Bouchard wrote:

Tu veut remplacer tout les /* par rien ?

str_replace est ton amie

$str = str_replace('/*','',$str);


oui et non en fait tous les :

* (backslash-star)
c'est le backslash qui pose pb, je vais essayer qqc du genre :

$str = str_replace(chr(92).'*','',$str);car ord(backslash)’...
--
Yvon

Avatar
yvon.thoravallist
Thomas Mlynarczyk wrote:

T'as déjà essayé ça:
$machin = ereg_replace( "*" , "" , $machin );
?
ben oui, marche pas mieux


je vais essayer qqc du genre :

$machin = ereg_replace( chr(92)."*" , "" , $machin );

--
Yvon Thoraval
http://OrganisationPolitique.com hébergé par :
http://ouvaton.coop/

Avatar
Nudrema
c'est normale tu remplace l'asterix par rien. Le résultat est cohérent. Vaut
mieux récupérer "*" et le remplacer par ""


ça ne changera rien car la chaine "*" n'est pas valide car non
fermée... analysons ensemble, comme php le ferait :
" == ouverture de la chaîne
* == *
" == "
--> la chaine n'est pas fermée.

Il faut garder en mémoire que est le caractère d'échappement, ce qui
veut dire que, chaque fois qu'il apparaît seul, il échappe le caractère
suivant. Ceci peut provoquer des résultats surprenants, il faut donc
toujours utiliser doublé dans une chaîne de caractères.

utilisez plutôt "*" ou "*" ...

Avatar
yvon.thoravallist
christophe c wrote:

avec sed ça ne renvoie pas le résultat escompté ...
par contre ça marche avec "[]*" ou ".*"


ah ouis, ce que j'ai fait :

$t=str_replace(chr(92)."*",$t);
chr(92) étant le backslash (obetnu par ord("")...
--
Yvon Thoraval
http://OrganisationPolitique.com hébergé par :
http://ouvaton.coop/

1 2