Kiedyś korzystałem do tego z pewnej funkcji. Niestety miała ona odwrotne działanie - czyli podmieniała coś w określonych znacznikach. Jest jednak pewien sposób na nią. Najpierw funkcja:
function replaceBetween($startString, $endString, $searchString, $replaceString, $data) {
$i = 0;
do
{
$firstFound = strpos($data, $startString,$i); if( !empty($firstFound) ) { $secondFound = strpos($data, $endString,$firstFound+1
);
$searchStringLenght = ($secondFound-$firstFound) + strlen($startString) + 1;
$k = $firstFound + strlen($startString); do
{
$pos = strpos($data, $searchString, $k ); if( $pos < $secondFound && !empty($pos) ) { }
$k = $k+1;
} while ( !empty($pos) );
} else $err = 1;
$i = $firstFound + 1;
}
while( $err != 1 );
return $data;
}
Sposób polega na tym aby na początku sprawdzanego tekstu dodać znacznik </a> a na końcu znacznik <a>. Następnie wywołać funkcję z parametrami:
$dane = replaceBetween('</a>','<a>','brzydkie_slowo','ladne_slowo','-</a>'.$dane.'<a>')
Funkcja może nie jest doskonała ale działa prawidłowo.