Re: [PHP] Replace in a string with regex

2009-07-22 Thread Eddie Drapkin
On Wed, Jul 22, 2009 at 8:02 AM, rszeusrsz...@gmail.com wrote:
 Hello,

 I’m tryng to make some replacements on a string.

 Everything goês fine until the regular expression.



 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;

 echo $a =  str_replace(array(7a45gfdi6icpan1jtb1j99o925,
 'temp/',’_([0-9])’), array(“test”,,””), $file)



 The idea is to remove /temp and the last _1 from the file name..but i’m only
 getting this:

 screens/test_1_main.jpg



 I want it to be: screens/test_main.jpg



 Thank you





If you're trying to do a regular expression based search and replace,
you probably ought to use preg_replace instead of str_replace, as
str_replace doesn't parse regular expressions.

Try this one out, I think I got what you wanted to do:

?php

$file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;

echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$2$3', $file);

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Replace in a string with regex

2009-07-22 Thread Ashley Sheridan
On Wed, 2009-07-22 at 13:02 +0100, rszeus wrote:
 Hello,
 
 I’m tryng to make some replacements on a string.
 
 Everything goês fine until the regular expression.
 
  
 
 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
 
 echo $a =  str_replace(array(7a45gfdi6icpan1jtb1j99o925,
 'temp/',’_([0-9])’), array(“test”,,””), $file)
 
  
 
 The idea is to remove /temp and the last _1 from the file name..but i’m only
 getting this:
 
 screens/test_1_main.jpg
 
  
 
 I want it to be: screens/test_main.jpg
 
  
 
 Thank you
 
  
 
Well, you seem to have some problems with the syntax you're using on
str_replace(). According to your script, you want to remove the
following:

7a45gfdi6icpan1jtb1j99o925- which you haven't even enclosed in quote
marks
'temp/'
’_([0-9])’- which are using weird back ticks, not quote marks

and you are trying to replace those three things with

“test”  - again, not proper quote marks

””  - not proper quote marks

Afaik, str_replace() doesn't allow for text replacement using regular
expressions, for that you'd have to use something like preg_replace()

Also, make sure your strings are correctly enclosed in quote marks, and
that the quote marks you use are actual quote marks and not the accented
'pretty' ones that are offered up by word processors, etc.

A regex which would do the job would look something like this:

^([^/]+)[^_]+\/(.+)$

That should create 2 matches, one for the initial directory and the
other for the latter part of the filename.

Thanks
Ash
www.ashleysheridan.co.uk


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



RE: [PHP] Replace in a string with regex

2009-07-22 Thread rszeus
Hi. It Works to remove the _1 but it doesn't replace 
'7a45gfdi6icpan1jtb1j99o925' for 'test'

Thank you

-Mensagem original-
De: Eddie Drapkin [mailto:oorza...@gmail.com] 
Enviada: quarta-feira, 22 de Julho de 2009 13:11
Para: rszeus
Cc: php-general@lists.php.net
Assunto: Re: [PHP] Replace in a string with regex

On Wed, Jul 22, 2009 at 8:02 AM, rszeusrsz...@gmail.com wrote:
 Hello,

 I’m tryng to make some replacements on a string.

 Everything goês fine until the regular expression.



 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;

 echo $a =  str_replace(array(7a45gfdi6icpan1jtb1j99o925,
 'temp/',’_([0-9])’), array(“test”,,””), $file)



 The idea is to remove /temp and the last _1 from the file name..but i’m only
 getting this:

 screens/test_1_main.jpg



 I want it to be: screens/test_main.jpg



 Thank you





If you're trying to do a regular expression based search and replace,
you probably ought to use preg_replace instead of str_replace, as
str_replace doesn't parse regular expressions.

Try this one out, I think I got what you wanted to do:

?php

$file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;

echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$2$3', $file);


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Replace in a string with regex

2009-07-22 Thread Eddie Drapkin
On Wed, Jul 22, 2009 at 9:07 AM, rszeusrsz...@gmail.com wrote:
 Hi. It Works to remove the _1 but it doesn't replace 
 '7a45gfdi6icpan1jtb1j99o925' for 'test'

 Thank you

 -Mensagem original-
 De: Eddie Drapkin [mailto:oorza...@gmail.com]
 Enviada: quarta-feira, 22 de Julho de 2009 13:11
 Para: rszeus
 Cc: php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex

 On Wed, Jul 22, 2009 at 8:02 AM, rszeusrsz...@gmail.com wrote:
 Hello,

 I’m tryng to make some replacements on a string.

 Everything goês fine until the regular expression.



 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;

 echo $a =  str_replace(array(7a45gfdi6icpan1jtb1j99o925,
 'temp/',’_([0-9])’), array(“test”,,””), $file)



 The idea is to remove /temp and the last _1 from the file name..but i’m only
 getting this:

 screens/test_1_main.jpg



 I want it to be: screens/test_main.jpg



 Thank you





 If you're trying to do a regular expression based search and replace,
 you probably ought to use preg_replace instead of str_replace, as
 str_replace doesn't parse regular expressions.

 Try this one out, I think I got what you wanted to do:

 ?php

 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;

 echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$2$3', $file);



In the second parameter, $2 is the string you'd want to replace to
test so change '$1$2$3' to '$1test$3'.

It seems like you're having trouble with regular expressions, may I
suggest you read up on them?

http://www.regular-expressions.info/ is a pretty great free resource,
as ridiculous as the design is.

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



RE: [PHP] Replace in a string with regex

2009-07-22 Thread rszeus
Totally right on the corrections. Sorry, i did not copy paste from the source 
code, I wrote here to change to other names and wrote it bad.
It should be:
$file = 'screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg';

 echo $a =  str_replace(array('7a45gfdi6icpan1jtb1j99o925', 
'temp/',’_([0-9])’), array('test','',''), $file)

Already understand that str_replace doesn't work with regex, but not getting 
any luck making one preg_replace() to my needs.

Thank you

-Mensagem original-
De: Ashley Sheridan [mailto:a...@ashleysheridan.co.uk] 
Enviada: quarta-feira, 22 de Julho de 2009 13:20
Para: rszeus
Cc: php-general@lists.php.net
Assunto: Re: [PHP] Replace in a string with regex

On Wed, 2009-07-22 at 13:02 +0100, rszeus wrote:
 Hello,
 
 I’m tryng to make some replacements on a string.
 
 Everything goês fine until the regular expression.
 
  
 
 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
 
 echo $a =  str_replace(array(7a45gfdi6icpan1jtb1j99o925,
 'temp/',’_([0-9])’), array(“test”,,””), $file)
 
  
 
 The idea is to remove /temp and the last _1 from the file name..but i’m only
 getting this:
 
 screens/test_1_main.jpg
 
  
 
 I want it to be: screens/test_main.jpg
 
  
 
 Thank you
 
  
 
Well, you seem to have some problems with the syntax you're using on
str_replace(). According to your script, you want to remove the
following:

7a45gfdi6icpan1jtb1j99o925- which you haven't even enclosed in quote
marks
'temp/'
’_([0-9])’- which are using weird back ticks, not quote marks

and you are trying to replace those three things with

“test”  - again, not proper quote marks

””  - not proper quote marks

Afaik, str_replace() doesn't allow for text replacement using regular
expressions, for that you'd have to use something like preg_replace()

Also, make sure your strings are correctly enclosed in quote marks, and
that the quote marks you use are actual quote marks and not the accented
'pretty' ones that are offered up by word processors, etc.

A regex which would do the job would look something like this:

^([^/]+)[^_]+\/(.+)$

That should create 2 matches, one for the initial directory and the
other for the latter part of the filename.

Thanks
Ash
www.ashleysheridan.co.uk


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Replace in a string with regex

2009-07-22 Thread Robert Cummings

rszeus wrote:

Hello,

I’m tryng to make some replacements on a string.

Everything goês fine until the regular expression.

 


$file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;

echo $a =  str_replace(array(7a45gfdi6icpan1jtb1j99o925,
'temp/',’_([0-9])’), array(“test”,,””), $file)

 


The idea is to remove /temp and the last _1 from the file name..but i’m only
getting this:

screens/test_1_main.jpg

 


I want it to be: screens/test_main.jpg


Sometimes it's helpful to break a problem into smaller problems:

?php

$a = str_replace( '/temp/', '/', $file );
$a = preg_replace( '#_\d+_#', '_', $a );

echo $a.\n;

?

Cheers,
Rob.
--
http://www.interjinn.com
Application and Templating Framework for PHP

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Replace in a string with regex

2009-07-22 Thread Robert Cummings
You can disregard this, it's wrong (I missed a part of the requirements 
:) and there's other solutions already provided (my email client is 
weird when you switch to a folder it always displays the first entry as 
the last read, so sometimes I miss that there are new posts above... I 
just switched a few weeks ago.


Cheers,
Rob.


Robert Cummings wrote:

rszeus wrote:

Hello,

I’m tryng to make some replacements on a string.

Everything goês fine until the regular expression.

 


$file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;

echo $a =  str_replace(array(7a45gfdi6icpan1jtb1j99o925,
'temp/',’_([0-9])’), array(“test”,,””), $file)

 


The idea is to remove /temp and the last _1 from the file name..but i’m only
getting this:

screens/test_1_main.jpg

 


I want it to be: screens/test_main.jpg


Sometimes it's helpful to break a problem into smaller problems:

?php

 $a = str_replace( '/temp/', '/', $file );
 $a = preg_replace( '#_\d+_#', '_', $a );

 echo $a.\n;

?

Cheers,
Rob.


--
http://www.interjinn.com
Application and Templating Framework for PHP

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



RE: [PHP] Replace in a string with regex

2009-07-22 Thread rszeus

Thank you.

What about instead test i want to insert a variable ?
Like 
$id = 30;
$file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$id$3', $file);
I am confusing  and '. 

Thank you
 

-Mensagem original-
De: Eddie Drapkin [mailto:oorza...@gmail.com] 
Enviada: quarta-feira, 22 de Julho de 2009 14:12
Para: rszeus
Cc: php-general@lists.php.net
Assunto: Re: [PHP] Replace in a string with regex

On Wed, Jul 22, 2009 at 9:07 AM, rszeusrsz...@gmail.com wrote:
 Hi. It Works to remove the _1 but it doesn't replace 
 '7a45gfdi6icpan1jtb1j99o925' for 'test'

 Thank you

 -Mensagem original-
 De: Eddie Drapkin [mailto:oorza...@gmail.com]
 Enviada: quarta-feira, 22 de Julho de 2009 13:11
 Para: rszeus
 Cc: php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex

 On Wed, Jul 22, 2009 at 8:02 AM, rszeusrsz...@gmail.com wrote:
 Hello,

 I’m tryng to make some replacements on a string.

 Everything goês fine until the regular expression.



 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;

 echo $a =  str_replace(array(7a45gfdi6icpan1jtb1j99o925,
 'temp/',’_([0-9])’), array(“test”,,””), $file)



 The idea is to remove /temp and the last _1 from the file name..but i’m only
 getting this:

 screens/test_1_main.jpg



 I want it to be: screens/test_main.jpg



 Thank you





 If you're trying to do a regular expression based search and replace,
 you probably ought to use preg_replace instead of str_replace, as
 str_replace doesn't parse regular expressions.

 Try this one out, I think I got what you wanted to do:

 ?php

 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;

 echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$2$3', $file);



In the second parameter, $2 is the string you'd want to replace to
test so change '$1$2$3' to '$1test$3'.

It seems like you're having trouble with regular expressions, may I
suggest you read up on them?

http://www.regular-expressions.info/ is a pretty great free resource,
as ridiculous as the design is.


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Replace in a string with regex

2009-07-22 Thread Jim Lucas
rszeus wrote:
 Thank you.
 
 What about instead test i want to insert a variable ?
 Like 
 $id = 30;
 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
 echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$id$3', $file);

Sure that can be done.  But you will need to change the second argument
to have double quotes so it will be parsed by PHP.

Then I would surround YOUR variable with curly brackets to separate it
from the rest.

echo preg_replace('#(screens/)temp/.+?_1(_main\.jpg)#',
  $1{$id}$3,
  $file);

 I am confusing  and '. 
 
 Thank you
  
 
 -Mensagem original-
 De: Eddie Drapkin [mailto:oorza...@gmail.com] 
 Enviada: quarta-feira, 22 de Julho de 2009 14:12
 Para: rszeus
 Cc: php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex
 
 On Wed, Jul 22, 2009 at 9:07 AM, rszeusrsz...@gmail.com wrote:
 Hi. It Works to remove the _1 but it doesn't replace 
 '7a45gfdi6icpan1jtb1j99o925' for 'test'

 Thank you

 -Mensagem original-
 De: Eddie Drapkin [mailto:oorza...@gmail.com]
 Enviada: quarta-feira, 22 de Julho de 2009 13:11
 Para: rszeus
 Cc: php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex

 On Wed, Jul 22, 2009 at 8:02 AM, rszeusrsz...@gmail.com wrote:
 Hello,

 I’m tryng to make some replacements on a string.

 Everything goês fine until the regular expression.



 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;

 echo $a =  str_replace(array(7a45gfdi6icpan1jtb1j99o925,
 'temp/',’_([0-9])’), array(“test”,,””), $file)



 The idea is to remove /temp and the last _1 from the file name..but i’m only
 getting this:

 screens/test_1_main.jpg



 I want it to be: screens/test_main.jpg



 Thank you




 If you're trying to do a regular expression based search and replace,
 you probably ought to use preg_replace instead of str_replace, as
 str_replace doesn't parse regular expressions.

 Try this one out, I think I got what you wanted to do:

 ?php

 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;

 echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$2$3', $file);


 
 In the second parameter, $2 is the string you'd want to replace to
 test so change '$1$2$3' to '$1test$3'.
 
 It seems like you're having trouble with regular expressions, may I
 suggest you read up on them?
 
 http://www.regular-expressions.info/ is a pretty great free resource,
 as ridiculous as the design is.
 
 



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Replace in a string with regex

2009-07-22 Thread Ashley Sheridan
On Wed, 2009-07-22 at 07:54 -0700, Jim Lucas wrote:
 rszeus wrote:
  Thank you.
  
  What about instead test i want to insert a variable ?
  Like 
  $id = 30;
  $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
  echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$id$3', $file);
 
 Sure that can be done.  But you will need to change the second argument
 to have double quotes so it will be parsed by PHP.
 
 Then I would surround YOUR variable with curly brackets to separate it
 from the rest.
 
 echo preg_replace('#(screens/)temp/.+?_1(_main\.jpg)#',
   $1{$id}$3,
   $file);
 
  I am confusing  and '. 
  
  Thank you
   
  
  -Mensagem original-
  De: Eddie Drapkin [mailto:oorza...@gmail.com] 
  Enviada: quarta-feira, 22 de Julho de 2009 14:12
  Para: rszeus
  Cc: php-general@lists.php.net
  Assunto: Re: [PHP] Replace in a string with regex
  
  On Wed, Jul 22, 2009 at 9:07 AM, rszeusrsz...@gmail.com wrote:
  Hi. It Works to remove the _1 but it doesn't replace 
  '7a45gfdi6icpan1jtb1j99o925' for 'test'
 
  Thank you
 
  -Mensagem original-
  De: Eddie Drapkin [mailto:oorza...@gmail.com]
  Enviada: quarta-feira, 22 de Julho de 2009 13:11
  Para: rszeus
  Cc: php-general@lists.php.net
  Assunto: Re: [PHP] Replace in a string with regex
 
  On Wed, Jul 22, 2009 at 8:02 AM, rszeusrsz...@gmail.com wrote:
  Hello,
 
  I’m tryng to make some replacements on a string.
 
  Everything goês fine until the regular expression.
 
 
 
  $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
 
  echo $a =  str_replace(array(7a45gfdi6icpan1jtb1j99o925,
  'temp/',’_([0-9])’), array(“test”,,””), $file)
 
 
 
  The idea is to remove /temp and the last _1 from the file name..but i’m 
  only
  getting this:
 
  screens/test_1_main.jpg
 
 
 
  I want it to be: screens/test_main.jpg
 
 
 
  Thank you
 
 
 
 
  If you're trying to do a regular expression based search and replace,
  you probably ought to use preg_replace instead of str_replace, as
  str_replace doesn't parse regular expressions.
 
  Try this one out, I think I got what you wanted to do:
 
  ?php
 
  $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
 
  echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$2$3', $file);
 
 
  
  In the second parameter, $2 is the string you'd want to replace to
  test so change '$1$2$3' to '$1test$3'.
  
  It seems like you're having trouble with regular expressions, may I
  suggest you read up on them?
  
  http://www.regular-expressions.info/ is a pretty great free resource,
  as ridiculous as the design is.
  
  
 
 
 
I tested this, with the double quotes and the curly braces around the
middle argument (to avoid PHP getting confused) and it didn't recognise
the matches by the numbered $1, $3, etc. I know I'm not the op who asked
the original question, but it might help him/her?

Thanks
Ash
www.ashleysheridan.co.uk


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Replace in a string with regex

2009-07-22 Thread Eddie Drapkin
On Wed, Jul 22, 2009 at 11:01 AM, Ashley
Sheridana...@ashleysheridan.co.uk wrote:
 On Wed, 2009-07-22 at 07:54 -0700, Jim Lucas wrote:
 rszeus wrote:
  Thank you.
 
  What about instead test i want to insert a variable ?
  Like
  $id = 30;
  $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
  echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$id$3', 
  $file);

 Sure that can be done.  But you will need to change the second argument
 to have double quotes so it will be parsed by PHP.

 Then I would surround YOUR variable with curly brackets to separate it
 from the rest.

 echo preg_replace('#(screens/)temp/.+?_1(_main\.jpg)#',
                   $1{$id}$3,
                   $file);

  I am confusing  and '.
 
  Thank you
 
 
  -Mensagem original-
  De: Eddie Drapkin [mailto:oorza...@gmail.com]
  Enviada: quarta-feira, 22 de Julho de 2009 14:12
  Para: rszeus
  Cc: php-general@lists.php.net
  Assunto: Re: [PHP] Replace in a string with regex
 
  On Wed, Jul 22, 2009 at 9:07 AM, rszeusrsz...@gmail.com wrote:
  Hi. It Works to remove the _1 but it doesn't replace 
  '7a45gfdi6icpan1jtb1j99o925' for 'test'
 
  Thank you
 
  -Mensagem original-
  De: Eddie Drapkin [mailto:oorza...@gmail.com]
  Enviada: quarta-feira, 22 de Julho de 2009 13:11
  Para: rszeus
  Cc: php-general@lists.php.net
  Assunto: Re: [PHP] Replace in a string with regex
 
  On Wed, Jul 22, 2009 at 8:02 AM, rszeusrsz...@gmail.com wrote:
  Hello,
 
  I’m tryng to make some replacements on a string.
 
  Everything goês fine until the regular expression.
 
 
 
  $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
 
  echo $a =  str_replace(array(7a45gfdi6icpan1jtb1j99o925,
  'temp/',’_([0-9])’), array(“test”,,””), $file)
 
 
 
  The idea is to remove /temp and the last _1 from the file name..but i’m 
  only
  getting this:
 
  screens/test_1_main.jpg
 
 
 
  I want it to be: screens/test_main.jpg
 
 
 
  Thank you
 
 
 
 
  If you're trying to do a regular expression based search and replace,
  you probably ought to use preg_replace instead of str_replace, as
  str_replace doesn't parse regular expressions.
 
  Try this one out, I think I got what you wanted to do:
 
  ?php
 
  $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
 
  echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$2$3', 
  $file);
 
 
 
  In the second parameter, $2 is the string you'd want to replace to
  test so change '$1$2$3' to '$1test$3'.
 
  It seems like you're having trouble with regular expressions, may I
  suggest you read up on them?
 
  http://www.regular-expressions.info/ is a pretty great free resource,
  as ridiculous as the design is.
 
 



 I tested this, with the double quotes and the curly braces around the
 middle argument (to avoid PHP getting confused) and it didn't recognise
 the matches by the numbered $1, $3, etc. I know I'm not the op who asked
 the original question, but it might help him/her?

 Thanks
 Ash
 www.ashleysheridan.co.uk



To avoid confusion, rather than something like
$1{$id}$3
Which looks really indecipherable, I'd definitely think something like
'$1' . $id . '$3'
is a lot easier to read and understand what's going on by immediately
looking at it.

As an added bonus, it'll definitely work ;)

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Replace in a string with regex

2009-07-22 Thread Andrew Ballard
On Wed, Jul 22, 2009 at 11:01 AM, Ashley
Sheridana...@ashleysheridan.co.uk wrote:
 On Wed, 2009-07-22 at 07:54 -0700, Jim Lucas wrote:
 Sure that can be done.  But you will need to change the second argument
 to have double quotes so it will be parsed by PHP.

 Then I would surround YOUR variable with curly brackets to separate it
 from the rest.

 echo preg_replace('#(screens/)temp/.+?_1(_main\.jpg)#',
                   $1{$id}$3,
                   $file);

 I tested this, with the double quotes and the curly braces around the
 middle argument (to avoid PHP getting confused) and it didn't recognise
 the matches by the numbered $1, $3, etc. I know I'm not the op who asked
 the original question, but it might help him/her?

 Thanks
 Ash
 www.ashleysheridan.co.uk

Don't you also have to escape the $'s for the matches since it's in
double quotes?

\$1{$id}\$3

Andrew

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



RE: [PHP] Replace in a string with regex

2009-07-22 Thread rszeus
Hi, 
It doens't work.
I get 0_main.jpg if I do that..
I don't undestand the point of $1 $2 and $3..
In preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', what will be $1 and $2 
and $3 ?
$  I already knwo it's the (.+?) but the others didnt' get it.

Thank you...

-Mensagem original-
De: Eddie Drapkin [mailto:oorza...@gmail.com] 
Enviada: quarta-feira, 22 de Julho de 2009 16:03
Para: a...@ashleysheridan.co.uk
Cc: Jim Lucas; rszeus; php-general@lists.php.net
Assunto: Re: [PHP] Replace in a string with regex

On Wed, Jul 22, 2009 at 11:01 AM, Ashley
Sheridana...@ashleysheridan.co.uk wrote:
 On Wed, 2009-07-22 at 07:54 -0700, Jim Lucas wrote:
 rszeus wrote:
  Thank you.
 
  What about instead test i want to insert a variable ?
  Like
  $id = 30;
  $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
  echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$id$3', 
  $file);

 Sure that can be done.  But you will need to change the second argument
 to have double quotes so it will be parsed by PHP.

 Then I would surround YOUR variable with curly brackets to separate it
 from the rest.

 echo preg_replace('#(screens/)temp/.+?_1(_main\.jpg)#',
   $1{$id}$3,
   $file);

  I am confusing  and '.
 
  Thank you
 
 
  -Mensagem original-
  De: Eddie Drapkin [mailto:oorza...@gmail.com]
  Enviada: quarta-feira, 22 de Julho de 2009 14:12
  Para: rszeus
  Cc: php-general@lists.php.net
  Assunto: Re: [PHP] Replace in a string with regex
 
  On Wed, Jul 22, 2009 at 9:07 AM, rszeusrsz...@gmail.com wrote:
  Hi. It Works to remove the _1 but it doesn't replace 
  '7a45gfdi6icpan1jtb1j99o925' for 'test'
 
  Thank you
 
  -Mensagem original-
  De: Eddie Drapkin [mailto:oorza...@gmail.com]
  Enviada: quarta-feira, 22 de Julho de 2009 13:11
  Para: rszeus
  Cc: php-general@lists.php.net
  Assunto: Re: [PHP] Replace in a string with regex
 
  On Wed, Jul 22, 2009 at 8:02 AM, rszeusrsz...@gmail.com wrote:
  Hello,
 
  I’m tryng to make some replacements on a string.
 
  Everything goês fine until the regular expression.
 
 
 
  $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
 
  echo $a =  str_replace(array(7a45gfdi6icpan1jtb1j99o925,
  'temp/',’_([0-9])’), array(“test”,,””), $file)
 
 
 
  The idea is to remove /temp and the last _1 from the file name..but i’m 
  only
  getting this:
 
  screens/test_1_main.jpg
 
 
 
  I want it to be: screens/test_main.jpg
 
 
 
  Thank you
 
 
 
 
  If you're trying to do a regular expression based search and replace,
  you probably ought to use preg_replace instead of str_replace, as
  str_replace doesn't parse regular expressions.
 
  Try this one out, I think I got what you wanted to do:
 
  ?php
 
  $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
 
  echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$2$3', 
  $file);
 
 
 
  In the second parameter, $2 is the string you'd want to replace to
  test so change '$1$2$3' to '$1test$3'.
 
  It seems like you're having trouble with regular expressions, may I
  suggest you read up on them?
 
  http://www.regular-expressions.info/ is a pretty great free resource,
  as ridiculous as the design is.
 
 



 I tested this, with the double quotes and the curly braces around the
 middle argument (to avoid PHP getting confused) and it didn't recognise
 the matches by the numbered $1, $3, etc. I know I'm not the op who asked
 the original question, but it might help him/her?

 Thanks
 Ash
 www.ashleysheridan.co.uk



To avoid confusion, rather than something like
$1{$id}$3
Which looks really indecipherable, I'd definitely think something like
'$1' . $id . '$3'
is a lot easier to read and understand what's going on by immediately
looking at it.

As an added bonus, it'll definitely work ;)


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Replace in a string with regex

2009-07-22 Thread Jim Lucas
rszeus wrote:
 Thank you. I undestand now.
 
 Anh it’s already workyng the replacemente with letteres. Bu if the variabele 
 is a number it doens’t work. Any ideas ?
 
  
 
 $file = screen/temp/7a45gfdi6icpan1jtb1j99o925_1_mini.jpg;
 
  
 
 $id = '70';
 
  echo preg_replace('#(Iscreen/)temp/(.+?)_1(.+?\.jpg)#', '$1'.$id,  $file);
 

You have a great big capital I in there...  Try removing that and see
what happens.


 I get 0
 
  
 
  
 
 $id = 'test';
 
  echo preg_replace('#(screen/)temp/(.+?)_1(.+?\.jpg)#', '$1'.$id,  $file);
 
 I get screen/test
 
  
 
 Any ideas ?
 
  
 
 Thank you
 
  
 
 De: Kyle Smith [mailto:kyle.sm...@inforonics.com] 
 Enviada: quarta-feira, 22 de Julho de 2009 17:22
 Para: rszeus
 Cc: 'Eddie Drapkin'; a...@ashleysheridan.co.uk; 'Jim Lucas'; 
 php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex
 
  
 
 The first match inside () is assigned to $1, the second is assigned to $2, 
 and so on.
 
 rszeus wrote: 
 
 Hi, 
 It doens't work.
 I get 0_main.jpg if I do that..
 I don't undestand the point of $1 $2 and $3..
 In preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', what will be $1 and 
 $2 and $3 ?
 $  I already knwo it's the (.+?) but the others didnt' get it.
  
 Thank you...
  
 -Mensagem original-
 De: Eddie Drapkin [mailto:oorza...@gmail.com] 
 Enviada: quarta-feira, 22 de Julho de 2009 16:03
 Para: a...@ashleysheridan.co.uk
 Cc: Jim Lucas; rszeus; php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex
  
 On Wed, Jul 22, 2009 at 11:01 AM, Ashley
 Sheridan mailto:a...@ashleysheridan.co.uk a...@ashleysheridan.co.uk wrote:
   
 
 On Wed, 2009-07-22 at 07:54 -0700, Jim Lucas wrote:
 
 
 rszeus wrote:
   
 
 Thank you.
  
 What about instead test i want to insert a variable ?
 Like
 $id = 30;
 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
 echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$id$3', $file);
 
 
 Sure that can be done.  But you will need to change the second argument
 to have double quotes so it will be parsed by PHP.
  
 Then I would surround YOUR variable with curly brackets to separate it
 from the rest.
  
 echo preg_replace('#(screens/)temp/.+?_1(_main\.jpg)#',
   $1{$id}$3,
   $file);
  
   
 
 I am confusing  and '.
  
 Thank you
  
  
 -Mensagem original-
 De: Eddie Drapkin [mailto:oorza...@gmail.com]
 Enviada: quarta-feira, 22 de Julho de 2009 14:12
 Para: rszeus
 Cc: php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex
  
 On Wed, Jul 22, 2009 at 9:07 AM, rszeus mailto:rsz...@gmail.com 
 rsz...@gmail.com wrote:
 
 
 Hi. It Works to remove the _1 but it doesn't replace 
 '7a45gfdi6icpan1jtb1j99o925' for 'test'
  
 Thank you
  
 -Mensagem original-
 De: Eddie Drapkin [mailto:oorza...@gmail.com]
 Enviada: quarta-feira, 22 de Julho de 2009 13:11
 Para: rszeus
 Cc: php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex
  
 On Wed, Jul 22, 2009 at 8:02 AM, rszeus mailto:rsz...@gmail.com 
 rsz...@gmail.com wrote:
   
 
 Hello,
  
 I’m tryng to make some replacements on a string.
  
 Everything goês fine until the regular expression.
  
  
  
 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
  
 echo $a =  str_replace(array(7a45gfdi6icpan1jtb1j99o925,
 'temp/',’_([0-9])’), array(“test”,,””), $file)
  
  
  
 The idea is to remove /temp and the last _1 from the file name..but i’m only
 getting this:
  
 screens/test_1_main.jpg
  
  
  
 I want it to be: screens/test_main.jpg
  
  
  
 Thank you
  
  
  
  
 
 
 If you're trying to do a regular expression based search and replace,
 you probably ought to use preg_replace instead of str_replace, as
 str_replace doesn't parse regular expressions.
  
 Try this one out, I think I got what you wanted to do:
  
 ?php
  
 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
  
 echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$2$3', $file);
  
  
   
 
 In the second parameter, $2 is the string you'd want to replace to
 test so change '$1$2$3' to '$1test$3'.
  
 It seems like you're having trouble with regular expressions, may I
 suggest you read up on them?
  
 http://www.regular-expressions.info/ is a pretty great free resource,
 as ridiculous as the design is.
  
  
 
 
  
  
   
 
 I tested this, with the double quotes and the curly braces around the
 middle argument (to avoid PHP getting confused) and it didn't recognise
 the matches by the numbered $1, $3, etc. I know I'm not the op who asked
 the original question, but it might help him/her?
  
 Thanks
 Ash
 www.ashleysheridan.co.uk
  
  
 
 
  
 To avoid confusion, rather than something like
 $1{$id}$3
 Which looks really indecipherable, I'd definitely think something like
 '$1' . $id . '$3'
 is a lot easier to read and understand what's going on by immediately
 looking at it.
  
 As an added

RE: [PHP] Replace in a string with regex

2009-07-22 Thread rszeus
No, sory, my bad typing. It's not the problem..
I have the same on both caxses, only chnage the variable $id 
 $file = screen/temp/7a45gfdi6icpan1jtb1j99o925_1_mini.jpg 
 $id = '70';
 echo preg_replace('#(screen/)temp/(.+?)_1(.+?\.jpg)#', '$1'.$id,  $file);
 Get: 0
 
file = screen/temp/7a45gfdi6icpan1jtb1j99o925_1_mini.jpg;
$id = test;
echo preg_replace('#(screen/)temp/(.+?)_1(.+?\.jpg)#', '$1'.$id,  $file);

Get: screen/test

What is wrong with having na integer on the var ?

Thank you

-Mensagem original-
De: Jim Lucas [mailto:li...@cmsws.com] 
Enviada: quarta-feira, 22 de Julho de 2009 18:44
Para: rszeus
Cc: 'Kyle Smith'; 'Eddie Drapkin'; a...@ashleysheridan.co.uk; 
php-general@lists.php.net
Assunto: Re: [PHP] Replace in a string with regex

rszeus wrote:
 Thank you. I undestand now.
 
 Anh it’s already workyng the replacemente with letteres. Bu if the variabele 
 is a number it doens’t work. Any ideas ?
 
  
 
 $file = screen/temp/7a45gfdi6icpan1jtb1j99o925_1_mini.jpg;
 
  
 
 $id = '70';
 
  echo preg_replace('#(Iscreen/)temp/(.+?)_1(.+?\.jpg)#', '$1'.$id,  $file);
 

You have a great big capital I in there...  Try removing that and see
what happens.


 I get 0
 
  
 
  
 
 $id = 'test';
 
  echo preg_replace('#(screen/)temp/(.+?)_1(.+?\.jpg)#', '$1'.$id,  $file);
 
 I get screen/test
 
  
 
 Any ideas ?
 
  
 
 Thank you
 
  
 
 De: Kyle Smith [mailto:kyle.sm...@inforonics.com] 
 Enviada: quarta-feira, 22 de Julho de 2009 17:22
 Para: rszeus
 Cc: 'Eddie Drapkin'; a...@ashleysheridan.co.uk; 'Jim Lucas'; 
 php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex
 
  
 
 The first match inside () is assigned to $1, the second is assigned to $2, 
 and so on.
 
 rszeus wrote: 
 
 Hi, 
 It doens't work.
 I get 0_main.jpg if I do that..
 I don't undestand the point of $1 $2 and $3..
 In preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', what will be $1 and 
 $2 and $3 ?
 $  I already knwo it's the (.+?) but the others didnt' get it.
  
 Thank you...
  
 -Mensagem original-
 De: Eddie Drapkin [mailto:oorza...@gmail.com] 
 Enviada: quarta-feira, 22 de Julho de 2009 16:03
 Para: a...@ashleysheridan.co.uk
 Cc: Jim Lucas; rszeus; php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex
  
 On Wed, Jul 22, 2009 at 11:01 AM, Ashley
 Sheridan mailto:a...@ashleysheridan.co.uk a...@ashleysheridan.co.uk wrote:
   
 
 On Wed, 2009-07-22 at 07:54 -0700, Jim Lucas wrote:
 
 
 rszeus wrote:
   
 
 Thank you.
  
 What about instead test i want to insert a variable ?
 Like
 $id = 30;
 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
 echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$id$3', $file);
 
 
 Sure that can be done.  But you will need to change the second argument
 to have double quotes so it will be parsed by PHP.
  
 Then I would surround YOUR variable with curly brackets to separate it
 from the rest.
  
 echo preg_replace('#(screens/)temp/.+?_1(_main\.jpg)#',
   $1{$id}$3,
   $file);
  
   
 
 I am confusing  and '.
  
 Thank you
  
  
 -Mensagem original-
 De: Eddie Drapkin [mailto:oorza...@gmail.com]
 Enviada: quarta-feira, 22 de Julho de 2009 14:12
 Para: rszeus
 Cc: php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex
  
 On Wed, Jul 22, 2009 at 9:07 AM, rszeus mailto:rsz...@gmail.com 
 rsz...@gmail.com wrote:
 
 
 Hi. It Works to remove the _1 but it doesn't replace 
 '7a45gfdi6icpan1jtb1j99o925' for 'test'
  
 Thank you
  
 -Mensagem original-
 De: Eddie Drapkin [mailto:oorza...@gmail.com]
 Enviada: quarta-feira, 22 de Julho de 2009 13:11
 Para: rszeus
 Cc: php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex
  
 On Wed, Jul 22, 2009 at 8:02 AM, rszeus mailto:rsz...@gmail.com 
 rsz...@gmail.com wrote:
   
 
 Hello,
  
 I’m tryng to make some replacements on a string.
  
 Everything goês fine until the regular expression.
  
  
  
 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
  
 echo $a =  str_replace(array(7a45gfdi6icpan1jtb1j99o925,
 'temp/',’_([0-9])’), array(“test”,,””), $file)
  
  
  
 The idea is to remove /temp and the last _1 from the file name..but i’m only
 getting this:
  
 screens/test_1_main.jpg
  
  
  
 I want it to be: screens/test_main.jpg
  
  
  
 Thank you
  
  
  
  
 
 
 If you're trying to do a regular expression based search and replace,
 you probably ought to use preg_replace instead of str_replace, as
 str_replace doesn't parse regular expressions.
  
 Try this one out, I think I got what you wanted to do:
  
 ?php
  
 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
  
 echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$2$3', $file);
  
  
   
 
 In the second parameter, $2 is the string you'd want to replace to
 test so change '$1$2$3' to '$1test$3'.
  
 It seems like you're having trouble with regular

Re: [PHP] Replace in a string with regex

2009-07-22 Thread Jim Lucas
rszeus wrote:
 No, sory, my bad typing. It's not the problem..
 I have the same on both caxses, only chnage the variable $id 
  $file = screen/temp/7a45gfdi6icpan1jtb1j99o925_1_mini.jpg 
  $id = '70';
  echo preg_replace('#(screen/)temp/(.+?)_1(.+?\.jpg)#', '$1'.$id,  $file);
  Get: 0
  
 file = screen/temp/7a45gfdi6icpan1jtb1j99o925_1_mini.jpg;
 $id = test;

Well, here you are trying to use a constant called test to set your
variable $id.  I would try surrounding test with single or double quotes

 echo preg_replace('#(screen/)temp/(.+?)_1(.+?\.jpg)#', '$1'.$id,  $file);
 
 Get: screen/test
 
 What is wrong with having na integer on the var ?
 
 Thank you
 
 -Mensagem original-
 De: Jim Lucas [mailto:li...@cmsws.com] 
 Enviada: quarta-feira, 22 de Julho de 2009 18:44
 Para: rszeus
 Cc: 'Kyle Smith'; 'Eddie Drapkin'; a...@ashleysheridan.co.uk; 
 php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex
 
 rszeus wrote:
 Thank you. I undestand now.

 Anh it’s already workyng the replacemente with letteres. Bu if the variabele 
 is a number it doens’t work. Any ideas ?

  

 $file = screen/temp/7a45gfdi6icpan1jtb1j99o925_1_mini.jpg;

  

 $id = '70';

  echo preg_replace('#(Iscreen/)temp/(.+?)_1(.+?\.jpg)#', '$1'.$id,  $file);

 
 You have a great big capital I in there...  Try removing that and see
 what happens.
 
 
 I get 0

  

  

 $id = 'test';

  echo preg_replace('#(screen/)temp/(.+?)_1(.+?\.jpg)#', '$1'.$id,  $file);

 I get screen/test

  

 Any ideas ?

  

 Thank you

  

 De: Kyle Smith [mailto:kyle.sm...@inforonics.com] 
 Enviada: quarta-feira, 22 de Julho de 2009 17:22
 Para: rszeus
 Cc: 'Eddie Drapkin'; a...@ashleysheridan.co.uk; 'Jim Lucas'; 
 php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex

  

 The first match inside () is assigned to $1, the second is assigned to $2, 
 and so on.

 rszeus wrote: 

 Hi, 
 It doens't work.
 I get 0_main.jpg if I do that..
 I don't undestand the point of $1 $2 and $3..
 In preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', what will be $1 and 
 $2 and $3 ?
 $  I already knwo it's the (.+?) but the others didnt' get it.
  
 Thank you...
  
 -Mensagem original-
 De: Eddie Drapkin [mailto:oorza...@gmail.com] 
 Enviada: quarta-feira, 22 de Julho de 2009 16:03
 Para: a...@ashleysheridan.co.uk
 Cc: Jim Lucas; rszeus; php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex
  
 On Wed, Jul 22, 2009 at 11:01 AM, Ashley
 Sheridan mailto:a...@ashleysheridan.co.uk a...@ashleysheridan.co.uk 
 wrote:
   

 On Wed, 2009-07-22 at 07:54 -0700, Jim Lucas wrote:
 

 rszeus wrote:
   

 Thank you.
  
 What about instead test i want to insert a variable ?
 Like
 $id = 30;
 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
 echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$id$3', $file);
 

 Sure that can be done.  But you will need to change the second argument
 to have double quotes so it will be parsed by PHP.
  
 Then I would surround YOUR variable with curly brackets to separate it
 from the rest.
  
 echo preg_replace('#(screens/)temp/.+?_1(_main\.jpg)#',
   $1{$id}$3,
   $file);
  
   

 I am confusing  and '.
  
 Thank you
  
  
 -Mensagem original-
 De: Eddie Drapkin [mailto:oorza...@gmail.com]
 Enviada: quarta-feira, 22 de Julho de 2009 14:12
 Para: rszeus
 Cc: php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex
  
 On Wed, Jul 22, 2009 at 9:07 AM, rszeus mailto:rsz...@gmail.com 
 rsz...@gmail.com wrote:
 

 Hi. It Works to remove the _1 but it doesn't replace 
 '7a45gfdi6icpan1jtb1j99o925' for 'test'
  
 Thank you
  
 -Mensagem original-
 De: Eddie Drapkin [mailto:oorza...@gmail.com]
 Enviada: quarta-feira, 22 de Julho de 2009 13:11
 Para: rszeus
 Cc: php-general@lists.php.net
 Assunto: Re: [PHP] Replace in a string with regex
  
 On Wed, Jul 22, 2009 at 8:02 AM, rszeus mailto:rsz...@gmail.com 
 rsz...@gmail.com wrote:
   

 Hello,
  
 I’m tryng to make some replacements on a string.
  
 Everything goês fine until the regular expression.
  
  
  
 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
  
 echo $a =  str_replace(array(7a45gfdi6icpan1jtb1j99o925,
 'temp/',’_([0-9])’), array(“test”,,””), $file)
  
  
  
 The idea is to remove /temp and the last _1 from the file name..but i’m only
 getting this:
  
 screens/test_1_main.jpg
  
  
  
 I want it to be: screens/test_main.jpg
  
  
  
 Thank you
  
  
  
  
 

 If you're trying to do a regular expression based search and replace,
 you probably ought to use preg_replace instead of str_replace, as
 str_replace doesn't parse regular expressions.
  
 Try this one out, I think I got what you wanted to do:
  
 ?php
  
 $file = screens/temp/7a45gfdi6icpan1jtb1j99o925_1_main.jpg;
  
 echo preg_replace('#(screens/)temp/(.+?)_1(_main\.jpg)#', '$1$2$3', $file

RE: [PHP] Replace in a string with regex

2009-07-22 Thread Ford, Mike
 -Original Message-
 From: rszeus [mailto:rsz...@gmail.com]
 Sent: 22 July 2009 19:23
 To: 'Jim Lucas'
 Cc: 'Kyle Smith'; 'Eddie Drapkin'; a...@ashleysheridan.co.uk; php-
 gene...@lists.php.net
 Subject: RE: [PHP] Replace in a string with regex
 
 No, sory, my bad typing. It's not the problem..
 I have the same on both caxses, only chnage the variable $id
  $file = screen/temp/7a45gfdi6icpan1jtb1j99o925_1_mini.jpg
  $id = '70';
  echo preg_replace('#(screen/)temp/(.+?)_1(.+?\.jpg)#', '$1'.$id,
 $file);
  Get: 0
 
 file = screen/temp/7a45gfdi6icpan1jtb1j99o925_1_mini.jpg;
 $id = test;
 echo preg_replace('#(screen/)temp/(.+?)_1(.+?\.jpg)#', '$1'.$id,
 $file);
 
 Get: screen/test
 
 What is wrong with having na integer on the var ?

Well, the problem here is that when you concatenate $id containing 70 on to 
'$1', you effectively end up with '$170' -- which the manual page at 
http://php.net/preg-replace makes clear is ambiguous, but is likely to be 
treated as $17 followed by a zero, rather than $1 followed by 70. Since $17 
doesn't exist (as you don't have that many capturing subpatterns in your 
pattern!), it is taken to be the null string -- leaving just the left over 0 as 
the result of the replacement. QED.

The workaround for this is also given on the page referenced above, which is to 
make your replacement be '${1}'.$id.

Incidentally, I don't really see the need for the $1, or the equivalent 
parentheses in the pattern -- since a fixed string is involved, why not just 
use it directly in both places? Like this:

   preg_replace('#screen/temp/(.+?)_1(.+?\.jpg)#', 'screen/'.$id, $file);

which completely sidesteps the problem.

Cheers!

Mike
 -- 
Mike Ford,
Electronic Information Developer, Libraries and Learning Innovation,  
Leeds Metropolitan University, C507, Civic Quarter Campus, 
Woodhouse Lane, LEEDS,  LS1 3HE,  United Kingdom 
Email: m.f...@leedsmet.ac.uk 
Tel: +44 113 812 4730




To view the terms under which this email is distributed, please go to 
http://disclaimer.leedsmet.ac.uk/email.htm


RE: [PHP] Replace in a string with regex

2009-07-22 Thread rszeus
Thank you very much!
Understand. And it Works very well now.

Cheers

-Mensagem original-
De: Ford, Mike [mailto:m.f...@leedsmet.ac.uk] 
Enviada: quinta-feira, 23 de Julho de 2009 00:04
Para: php-general@lists.php.net
Assunto: RE: [PHP] Replace in a string with regex

 -Original Message-
 From: rszeus [mailto:rsz...@gmail.com]
 Sent: 22 July 2009 19:23
 To: 'Jim Lucas'
 Cc: 'Kyle Smith'; 'Eddie Drapkin'; a...@ashleysheridan.co.uk; php-
 gene...@lists.php.net
 Subject: RE: [PHP] Replace in a string with regex
 
 No, sory, my bad typing. It's not the problem..
 I have the same on both caxses, only chnage the variable $id
  $file = screen/temp/7a45gfdi6icpan1jtb1j99o925_1_mini.jpg
  $id = '70';
  echo preg_replace('#(screen/)temp/(.+?)_1(.+?\.jpg)#', '$1'.$id,
 $file);
  Get: 0
 
 file = screen/temp/7a45gfdi6icpan1jtb1j99o925_1_mini.jpg;
 $id = test;
 echo preg_replace('#(screen/)temp/(.+?)_1(.+?\.jpg)#', '$1'.$id,
 $file);
 
 Get: screen/test
 
 What is wrong with having na integer on the var ?

Well, the problem here is that when you concatenate $id containing 70 on to 
'$1', you effectively end up with '$170' -- which the manual page at 
http://php.net/preg-replace makes clear is ambiguous, but is likely to be 
treated as $17 followed by a zero, rather than $1 followed by 70. Since $17 
doesn't exist (as you don't have that many capturing subpatterns in your 
pattern!), it is taken to be the null string -- leaving just the left over 0 as 
the result of the replacement. QED.

The workaround for this is also given on the page referenced above, which is to 
make your replacement be '${1}'.$id.

Incidentally, I don't really see the need for the $1, or the equivalent 
parentheses in the pattern -- since a fixed string is involved, why not just 
use it directly in both places? Like this:

   preg_replace('#screen/temp/(.+?)_1(.+?\.jpg)#', 'screen/'.$id, $file);

which completely sidesteps the problem.

Cheers!

Mike
 -- 
Mike Ford,
Electronic Information Developer, Libraries and Learning Innovation,  
Leeds Metropolitan University, C507, Civic Quarter Campus, 
Woodhouse Lane, LEEDS,  LS1 3HE,  United Kingdom 
Email: m.f...@leedsmet.ac.uk 
Tel: +44 113 812 4730




To view the terms under which this email is distributed, please go to 
http://disclaimer.leedsmet.ac.uk/email.htm


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php