10
votes

ereg_replace to freg_replace?

Comment puis-je convertir

preg_replace... ?


0 commentaires

3 Réponses :


1
votes

Délimiteurs, ajoutez tout caractère à début et à la fin de l'expression, dans ce cas, et par tradition, le caractère prg_replace (' /.*\.(.*)$/ ', " 1 ", $ imgfile); La regex n'est pas très bonne, mieux d'utiliser Strrpos et de prendre des substrats ().

regex est lent, utilisez ceci. $ Extension = substrateur ($ imgname, strros ($ imgname, '.'));


3 commentaires

Je sais mais avoir ce problème; Preg_replace () [Fonction.Prec-Remplacer]: modificateur inconnu '$' in c: \ wamp \ www ..


Oui, mon mauvais, aussi l'édition semble détruire l'expression. Mieux d'utiliser un substrat () dans ce cas. Vous pouvez également utiliser Preg_Match.


Vous pouvez échapper à votre code avec des backticks (voir Stackoverflow.com/editing-help ). La solution $ semble bonne.



11
votes
preg_replace("/.*\.(.*)$/", "\\1", "foo.jpg")
I don't know why PHP requires the / delimiters.  The only reason Perl, JS, etc. have them is that they allow regex literals, which PHP doesn't.

2 commentaires

C'est parce qu'ils choisissent d'utiliser la chaîne unique pour fournir à la fois le modificateur et le motif de regex. "/ [a-z] / i" .


Voir php.net/manual/fr/regexp.reference.delimiters.php .. Par exemple, $ a = 'string / with / slashes'; $ b = preg_replace ('# / avec / #' ',' -without- ', $ a); est valide, définit $ b à string-sans-slashes < / CODE> Et vous n'avez pas à échapper au / Preg_replace .



20
votes

Vous devez connaître 4 choses principales aux modèles Port Ereg à Pregg:

  1. Ajouter des délimiteurs (/): 'motif' => '/ motif /'

  2. Délimiteur d'échappement S'il fait partie du motif: 'patt / ern' => '/ patt \ / ern /'
    Atteignez-le de manière programmatique de manière programmatique:
    $ ereg_pattern = '

    . + ';
    $ PREG_PATTERN = '/' .ADDCSLASHES ($ EREG_PATTERN, '/'). '/';
  3. eregi (correspondance insensible à la casse): 'modèle' => '/ motif / i' donc, si Vous utilisez une fonction Eregi pour cassette insidiante, il suffit d'ajouter 'Je' à la fin du nouveau motif ('/ motif /').

  4. valeurs ASCII : En Ereg, si vous utilisez le numéro dans le motif, il est supposé que vous vous référez à l'ASCII d'un personnage. Mais en PREG, le nombre n'est pas traité comme valeur ASCII. Donc, si votre modèle contenir la valeur ASCII dans l'expression EREG (par exemple: nouvelle ligne, Onglets, etc.) puis le convertir en hexadecimal et le préfixer avec \ x.
    Exemple: 9 (onglet) devient \ x9 ou utilisez également \ T.

    J'espère que cela aidera.


1 commentaires

Il existe un intégré pour échapper à une chaîne de regex entre les délimiteurs PHP.net/Manual/ fr / fonction.preg-ciote.php