Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.www.php > #22670 > unrolled thread

rimuovere la parte iniziale di una stringa tramite regex

Started byforum <forum@forum.it>
First post2019-05-07 06:05 +0200
Last post2019-05-08 12:26 +0200
Articles 8 — 4 participants

Back to article view | Back to it.comp.www.php


Contents

  rimuovere la parte iniziale di una stringa tramite regex forum <forum@forum.it> - 2019-05-07 06:05 +0200
    Re: rimuovere la parte iniziale di una stringa tramite regex Roberto Tagliaferri <tagliaferri@bofhland.org> - 2019-05-07 08:18 +0200
    Re: rimuovere la parte iniziale di una stringa tramite regex Leonardo Serni <lserni@gmail.com> - 2019-05-07 08:32 +0200
      Re: rimuovere la parte iniziale di una stringa tramite regex forum <forum@forum.it> - 2019-05-07 11:45 +0200
        Re: rimuovere la parte iniziale di una stringa tramite regex Alessandro Pellizzari <shuriken@amiran.it> - 2019-05-07 11:13 +0100
          Re: rimuovere la parte iniziale di una stringa tramite regex forum <forum@forum.it> - 2019-05-07 13:05 +0200
            Re: rimuovere la parte iniziale di una stringa tramite regex Alessandro Pellizzari <shuriken@amiran.it> - 2019-05-07 13:00 +0100
              Re: rimuovere la parte iniziale di una stringa tramite regex forum <forum@forum.it> - 2019-05-08 12:26 +0200

#22670 — rimuovere la parte iniziale di una stringa tramite regex

Fromforum <forum@forum.it>
Date2019-05-07 06:05 +0200
Subjectrimuovere la parte iniziale di una stringa tramite regex
Message-ID<qar06q$i2c$1@gioia.aioe.org>
echo preg_replace(
	'/^abc\/',
	'',
	'abc\xyz'
); // dovrebbe rimanere solo xyz

PHP Warning:  preg_replace(): No ending delimiter '/' found

Perchè?

[toc] | [next] | [standalone]


#22671

FromRoberto Tagliaferri <tagliaferri@bofhland.org>
Date2019-05-07 08:18 +0200
Message-ID<qar85o$1jad$1@gioia.aioe.org>
In reply to#22670
forum wrote:

> echo preg_replace(
> '/^abc\/',
> '',
> 'abc\xyz'
> ); // dovrebbe rimanere solo xyz
> 
> PHP Warning:  preg_replace(): No ending delimiter '/' found
> 
> Perchè?
Ciao, non capisco un kaiser di regex ma se non sbaglio \ è un carattere di 
escape, quindi devi scrivere '/^abc\\/'

che non da errore ma non ritorna nulla

-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)tosnet.it
www.robyt.eu

[toc] | [prev] | [next] | [standalone]


#22672

FromLeonardo Serni <lserni@gmail.com>
Date2019-05-07 08:32 +0200
Message-ID<6i92del48ieg1shrpm6gr34qcmsji1ct77@L.Serni>
In reply to#22670
On Tue, 7 May 2019 06:05:47 +0200, forum <forum@forum.it> wrote:

>echo preg_replace(
>	'/^abc\/',
>	'',
>	'abc\xyz'
>); // dovrebbe rimanere solo xyz
>
>PHP Warning:  preg_replace(): No ending delimiter '/' found
>
>Perchè?

Perché "\" fa da escape per "/". Se vuoi mettere il simbolo \, devi scriverlo
\\ (anche forse nella seconda stringa, per sicurezza; altrimenti, finisce che
'ciccio\riccio' e "ciccio\riccio" sono due stringhe diversissime, cosa che ti
può cogliere di sorpresa).

Leonardo
-- 

"You all presumably know why" :-) :-(

[toc] | [prev] | [next] | [standalone]


#22674

Fromforum <forum@forum.it>
Date2019-05-07 11:45 +0200
Message-ID<qark3b$18cu$1@gioia.aioe.org>
In reply to#22672
Il 07/05/19 08:32, Leonardo Serni ha scritto:
> On Tue, 7 May 2019 06:05:47 +0200, forum <forum@forum.it> wrote:
> 
>> echo preg_replace(
>> 	'/^abc\/',
>> 	'',
>> 	'abc\xyz'
>> ); // dovrebbe rimanere solo xyz
>>
>> PHP Warning:  preg_replace(): No ending delimiter '/' found
>>
>> Perchè?
> 
> Perché "\" fa da escape per "/". Se vuoi mettere il simbolo \, devi scriverlo
> \\ (anche forse nella seconda stringa, per sicurezza; altrimenti, finisce che
> 'ciccio\riccio' e "ciccio\riccio" sono due stringhe diversissime, cosa che ti
> può cogliere di sorpresa).
> 
> Leonardo
> 

$ cat a.php	
<?php
echo preg_replace(
     '/^abc\\/',
     '',
     'abc\\xyz'
);
$ php a.php
PHP Warning:  preg_replace(): No ending delimiter '/' found in 
/tmp/a.php on line 5


Bohhh???

[toc] | [prev] | [next] | [standalone]


#22675

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2019-05-07 11:13 +0100
Message-ID<gjd41uFml70U1@mid.individual.net>
In reply to#22674
On 07/05/2019 10:45, forum wrote:
> echo preg_replace(
>      '/^abc\\/',
>      '',
>      'abc\\xyz'
> );
> $ php a.php
> PHP Warning:  preg_replace(): No ending delimiter '/' found in 
> /tmp/a.php on line 5

Usa un delimitatore diverso:

echo preg_replace(
      '~^abc\\~',
      '',
      'abc\\xyz'
);

Bye.

[toc] | [prev] | [next] | [standalone]


#22676

Fromforum <forum@forum.it>
Date2019-05-07 13:05 +0200
Message-ID<qarop7$1tmb$1@gioia.aioe.org>
In reply to#22675
Il 07/05/19 12:13, Alessandro Pellizzari ha scritto:
> echo preg_replace(
>       '~^abc\\~',
>       '',
>       'abc\\xyz'
> );

PHP Warning:  preg_replace(): No ending delimiter '~' found

[toc] | [prev] | [next] | [standalone]


#22677

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2019-05-07 13:00 +0100
Message-ID<gjdaacFnvihU1@mid.individual.net>
In reply to#22676
On 07/05/2019 12:05, forum wrote:
> Il 07/05/19 12:13, Alessandro Pellizzari ha scritto:
>> echo preg_replace(
>>       '~^abc\\~',
>>       '',
>>       'abc\\xyz'
>> );
> 
> PHP Warning:  preg_replace(): No ending delimiter '~' found

Non hai modo di usare un separatore diverso per i dati? :P

Allora, il backspace probabilmente è di escape sia per PHP che per le 
regexp, quindi prova a raddoppiarlo due volte:

  echo preg_replace(
        '~^abc\\\\~',
        '',
        'abc\\xyz'
  );

[toc] | [prev] | [next] | [standalone]


#22678

Fromforum <forum@forum.it>
Date2019-05-08 12:26 +0200
Message-ID<qauas0$1fci$1@gioia.aioe.org>
In reply to#22677
Il 07/05/19 14:00, Alessandro Pellizzari ha scritto:
> 
>   echo preg_replace(
>         '~^abc\\\\~',
>         '',
>         'abc\\xyz'
>   );

Funziona!!!

[toc] | [prev] | [standalone]


Back to top | Article view | it.comp.www.php


csiph-web