Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

expression =?iso-8859-1?b?culndWxp6HJl?

4 réponses
Avatar
Baptiste
J'ai un problème avec ereg_replace
en gros je veux remplacé dans une string tous les ' qui ne sont pas suivit
par des " par \'
L'expression régulière donnerai : '(?|")
donc je fait
$result=ereg("\'(?|\")", "\'", $origin);
J'obtiens l'erreur :
Delimiter must not be alphanumeric or backslash
donc j'écris
$result=ereg("/\'(?|\")/", "\'", $origin);
et j'ai le résultat suivant :
Compilation failed: unrecognized character after (? at offset 4

Si quelqu'un à une idée
merci d'avance

4 réponses

Avatar
tyoup
Baptiste wrote:

J'ai un problème avec ereg_replace
en gros je veux remplacé dans une string tous les ' qui ne sont pas suivit
par des " par '
L'expression régulière donnerai : '(?|")
donc je fait
$result=ereg("'(?|")", "'", $origin);
J'obtiens l'erreur :
Delimiter must not be alphanumeric or backslash
donc j'écris
$result=ereg("/'(?|")/", "'", $origin);
et j'ai le résultat suivant :
Compilation failed: unrecognized character after (? at offset 4

Si quelqu'un à une idée
merci d'avance


ereg_replace ? ereg ? preg_replace ?

$result = preg_replace("/'(?!")/", "'", $origin);

voilà ...

--
Tyoup

Avatar
Christophe PEREZ
Le Wed, 03 Mar 2004 09:42:13 +0000, Baptiste a écrit:

J'ai un problème avec ereg_replace
en gros je veux remplacé dans une string tous les ' qui ne sont pas suivit
par des " par '


clair.

L'expression régulière donnerai : '(?|")


???
Pour moi c'est '[^"] l'expression qui matche.

donc je fait
$result=ereg("'(?|")", "'", $origin);


tu parles de ereg_replace et tu utilises ereg.

Et pourquoi échapper l'apostrophe ?

J'obtiens l'erreur :
Delimiter must not be alphanumeric or backslash
donc j'écris
$result=ereg("/'(?|")/", "'", $origin);


Ne correspond pas à la syntaxe ereg_replace mais à preg_replace.

et j'ai le résultat suivant :
Compilation failed: unrecognized character after (? at offset 4


Il le dit, c'est le "|" qu'il n'aime pas (il dit bien après "(?")
C'est là qu'il faudrait échapper ;-)

Si quelqu'un à une idée


Avec ton expression régulière non, parce que je ne la comprends pas.
Mais si elle est valide et que quelqu'un veut bien me l'expliquer, je
suis à l'écoute.

Moi, j'aurais fait ça :
preg_replace("/'([^"])/","'$1",$chaine);

merci d'avance


Je t'en prie.

--
Christophe PEREZ
Écrivez moi sans _faute !

Avatar
tyoup
L'expression régulière donnerai : '(?|")



???
Pour moi c'est '[^"] l'expression qui matche.


pour moi c'est '([^"]|$) ... ;-)

Avec ton expression régulière non, parce que je ne la comprends pas.
Mais si elle est valide et que quelqu'un veut bien me l'expliquer, je
suis à l'écoute.


c'est '(?!") ... il s'agit d'un motif du type (? ... ), ici il s'agit
d'une assertion négative (!).

--
Tyoup


Avatar
Christophe PEREZ
Le Thu, 04 Mar 2004 17:21:43 +0000, tyoup a écrit:

pour moi c'est '([^"]|$) ... ;-)


Oui, si on veut, mais je disais "qui matche" donc je ne capturais pas
(encore).

c'est '(?!") ... il s'agit d'un motif du type (? ... ), ici il s'agit
d'une assertion négative (!).


Ah ben là, j'ai encore appris quelque chose...
Du coup, j'ai voulu revoir certaines de mes expressions pour tenter
d'optimiser.
Et je me rends compte qu'il y a quelque chose (entre autres) que je ne
parviens pas à faire.

A) Je voudrais, dans une chaîne pouvant contenir des sauts de ligne,
remplacer tous ces sauts de lignes, sauf ceux compris dans une balise
textarea, donc ne pas remplacer les n qui sont dans :
<textarea[^>]*>.*</textarea>
Or, je n'y parviens pas.

B) Je me suis dit que, pour palier à ça, j'allais :
1) remplacer dans <textarea[^>]*>.*</textarea>, tous les sauts de ligne
par un chaine improbable ailleurs SAUT_DE_LIGNE_TEXTAREA
2) remplacer tous les sauts de ligne par la valeur que je souhaite
3) remplacer tous les SAUT_DE_LIGNE_TEXTAREA par des sauts de ligne.

Je sais faire les 2) et 3), mais le 1) reste toujours un problème pour
moi.
si quelqu'un pouvait m'aiguiller, ça me rendrait bien service, sachant
toutefois que la problématique reste celle du A) et que le B) ne serait
qu'un paliatif si le A) n'est pas faisable directement.

Merci d'avance.

--
Christophe PEREZ
Écrivez moi sans _faute !