这是另一个选项,使用preg_replace_callback。它实际上与Gennadiy的方法非常相似。唯一真正的区别是,它使用PHP的preg方面(并且它有更多的工作)。但这是另一种玷污谚语猫的方式。
// SET OUR DEFAULT STRING
$string = 'Hi I want @size suit which is @size-name';
// LOOK FOR EITHER size-name OR size AND IF YOU FIND IT ...
// RUN THE FUNCTION 'replace_sizes'
$string = preg_replace_callback('[email protected](size-name|size)~', 'replace_sizes', $string);
// PRINT OUT OUR MODIFIED STRING
print $string;
// THIS IS THE FUNCTION THAT WILL BE RUN EVERY TIME A MATCH IS FOUND
// EITHER 'size' OR 'size-name' WILL BE STORED IN $m[1]
function replace_sizes($m) {
// SET UP AN ARRAY THAT HAS OUR POTENTIAL MATCHES AS KEYS
// AND THE TEXT WE WANT TO REPLACE WITH AS THE VALUE
$size_text_array = array('size-name' => 'replaceword2', 'size' => 'replaceword');
// RETURN WHATEVER THE VALUE IS BASED ON THE KEY
return $size_text_array[$m[1]];
}
这将打印出:
Hi I want replaceword suit which is replaceword2
这里是一个工作演示: