Skip to main content
July 12, 2009
Answered

php regex

  • July 12, 2009
  • 1 reply
  • 1645 views

hello,

I need to replace my <div> tags to <TEXT> tag, but i'm very bad at regex...

i'm tring with this

<%div%[^>]*>(.*?)</%div%>

but it does not work, what can I do, to change <div align="left">my text</div>  to <TEXT align=left">my text</TEXT>

Thanks

Pluda

This topic has been closed for replies.
Correct answer David_Powers

You say PHP regex in the subject line, so I have written it for PHP. It's slightly different if you're using Find and Replace in Dreamweaver.

$text = <<<EOL
<div id="div1">Content for  id "div1" Goes Here</div>
<div id="div2">Content for  id "div2" Goes Here</div>
EOL;
$find = '{<div([\w\W]*?)</div>}';
$new = preg_replace($find, '<TEXT\1</TEXT>', $text);
echo $new;

1 reply

David_Powers
David_PowersCorrect answer
Inspiring
July 12, 2009

You say PHP regex in the subject line, so I have written it for PHP. It's slightly different if you're using Find and Replace in Dreamweaver.

$text = <<<EOL
<div id="div1">Content for  id "div1" Goes Here</div>
<div id="div2">Content for  id "div2" Goes Here</div>
EOL;
$find = '{<div([\w\W]*?)</div>}';
$new = preg_replace($find, '<TEXT\1</TEXT>', $text);
echo $new;

July 13, 2009

Hello,

thank you for reply, it solved my problem :-), I do not realy untherstand this regex things, but thei're a big, big help sometimes.

Thanks

Pluda

August 5, 2009

Except when used in the Dreamweaver Find and Replace feature, a regex needs to be surrounded by delimiters. Normally a pair of forward slashes are used, but you can use just about any punctuation character that doesn't have a special meaning in a regular expression. So, my regex delimiters are /regex/. The one you found uses #regex#. Using # means you don't need to escape forward slashes inside the regex. Notice that I preceded the forward slash  in </FONT> with a backslash. The other regex just uses the forward slash.

The "i" at the end of my regex makes it case-insensitive. The "is" at the end of the other one makes it both case-insensitive, and tells a period to match newlines.

The difference between the two regexes is that mine looks for both the opening and closing font tags, and uses parentheses to capture the content like this:

([\w\W]+)

This matches anything, including newline characters.

The other regex simply deletes the font tags. They both work, but in different ways. Looking at the one you found, I think it's probably more efficient than the one I created. Thanks for sharing.


and thank you or teaching :-)

it's working, but still with one error

using

$tags_flash = array('#</?P[^>]*>#is');

$tags_html = array('<p class="login_texto">$1</%p%>');

$row["texto"] = preg_replace($tags_flash, $tags_html, $row["texto"]);

I got

<p class="login_texto"></%p%>Content here<p class="login_texto"></%p%>