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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
-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
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