You are here: strange behaviour: preg_replace with /e modifier and str_replace « PHP Programming Language « IT news, forums, messages
strange behaviour: preg_replace with /e modifier and str_replace

Posted by amygdala on 05/28/07 06:18

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]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация