Re: Match anything between two " that is not a " except if it is escaped...
| From: | Nikolay Ananiev | Date: | Fri, 18 Jan 2008 10:28:32 +0000 |
| Subject: | Re: Match anything between two " that is not a " except if it is escaped... | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-267539@lists.php.net to get a copy of this message | ||
This is for double quotes:
'/"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"/'
this is for single:
'/\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'/'
i took these from the smarty compiler class.
"mathieu leddet" <mathieu.leddet@mobilescope.com> wrote in message
news:067E44F59025F64BBEC3DB1BD2575392ACFC16@KEOPS.int.in-fusio.com...
Hi everyone,
I am struggling with regular expression trying to match strings
delimited by double quotes, but taking into consideration that \" is not
a string ending character.
-------8<---------------------------------------------------------------
-
$in = 'this is a string : "Hi everyone my name is \"Mathieu\"!" Here is
a second string : "PHP is just perfect"';
// pattern for catching strings between "
$pattern = '#"([^"]*)"#';
// surround matching string with HTML span code to highlight
$replacement = '<b>"${1}"</b>';
// perform the reg exp replacement
$out = preg_replace($pattern, $replacement, $in);
-------8<---------------------------------------------------------------
-
$out contains :
this is a string : <b>"Hi everyone my name is
\"</b>Mathieu\<b>"!"</b>
Here is a second string : <b>"PHP is just perfect"</b>
This behaviour is normal considering my pattern (anything between two "
that is not a ").
But I don't know how to get this :
this is a string : <b>"Hi everyone my name is \"Mathieu\"!"</b> Here
is
a second string : <b>"PHP is just perfect"</b>
I would like my pattern to express : Anything between two " that is not
a " except if it is escaped.
Thanks for reading me, any help in return is welcome !
--
Mathieu
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php