Jump to content

Restrict preg_replace function from multiple tags


Allend

Recommended Posts

I have a great little script that will search a file and replace a list of words with their matching replacement word.  I have also found a way to prevent preg_replace from replacing those words if they appear in anchor tags, img tags, or really any one tag I specify.  I would like to create an OR statement to be able to specify multiple tags.  To be clear, I would like to prevent preg_replace from replacing words that not only appear in an anchor tag, but any that appear in an anchor,link,embed,object,img, or span tag.  I tried using the '|' OR operator at various places in the code with no success.

 

<?php
$data = 'somefile.html';
$data = file_get_contents($data);
$search = array ("/(?!(?:[^<]+>|[^>]+<\/a>))\b(red)\b/is","/(?!(?:[^<]+>|[^>]+<\/a>))\b(white)\b/is","/(?!(?:[^<]+>|[^>]+<\/a>))\b(blue)\b/is");
$replace = array ('Apple','Potato','Boysenberry');
echo preg_replace($search, $replace, $data);?>
print $data;
?>

 

looking at the first search term which basically says to search for "red" but not inside <a> </a>:

"/(?!(?:[^<]+>|[^>]+<\/a>))\b(red)\b/is"

 

I am trying to figure out how I can keep preg_replace out of not just the </a> tag, but also the other tags listed.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.