- preg_replace_callback: documentation ( source)
- preg_quote: documentation ( source)
<?php
$string = 'xxx bla *xxx bla bla **xxx bla bla ***xxx bla bla ****xxx';
$search = 'xxx';
$char = '*';
$string = preg_replace_callback(
'/\b(' . preg_quote($char) . '*)(' . $search . ')\b/',
function($matches) {
global $char;
if(strlen($matches[1]) % 2 === 0) {
return $matches[1] . $char . $matches[2];
} else {
return $matches[0];
}
},
$string
);
print $string;