|
Posted by petersprc on 05/28/07 08:34
You could try something like:
"strtr('$0', array('\\\"' => '\"', '\'' => '\"'))"
instead. That is known behavior of the /e modifier...
On May 28, 2:18 am, "amygdala" <nore...@noreply.com> wrote:
> Hi there,
>
> I'm trying to replace single quoted attributes in HTML tags with double
> quotes. What I've come up with is this:
>
> function replaceSingleQuotesInsideTags( $input )
> {
> $output = preg_replace(
> '/<[^>]*>/e',
> "str_replace( '\'', '\"', '$0' )",
> $input
> );
> return $output;
>
> }
>
> So let's say I have this string of HTML code:
>
> On <A href="/home/" target="_self">this</A> page you will find <SPAN
> STYLE='font-style: italic'>stuff</SPAN>
>
> Result:
> On <A href=\"/home/\" target=\"_self\">this</A> page you will find <SPAN
> STYLE="font-style: italic">stuff</SPAN>
>
> As you can see, when I run it through my function
> replaceSingleQuotesInsideTags, not only does it replace the single quotes
> with double quotes, but it also adds backslashes before double quotes that
> were already present. This is unexpected behaviour to me.
>
> Expected result:
> On <A href="/home/" target="_self">this</A> page you will find <SPAN
> STYLE="font-style: italic">stuff</SPAN>
>
> Note the missing backslashes in the anchor tag attributes.
>
> Does anybody have an idea of what is going on here?
>
> Working with PHP 5.1.4, magic_quotes (all) off.
>
> Thank you in advance.
Navigation:
[Reply to this message]
|