Nah, you want the preg_replace function - it's faster and can recognise word boundaries:
$description = preg_replace("/\b$value1\b/","$value2",$description);
You might want to replace the search and replace texts with arrays, to handle different capitalisations. Just adding an i modifier to the regexp won't cut it, because $value2 would have to be adjusted as well.
$description = preg_replace(
array(
"/\b$value1\b/",
"/\b".strtolower($value1)."\b/",
"/\b".strtoupper($value1)."\b/",
"/\b".ucfirst($value1)."\b/",
"/\b".ucwords($value1)."\b/",
etc...
),array(
"$value2",
strtolower($value2),
strtoupper($value2),
ucfirst($value2),
ucwords($value2),
"$value2",
etc...
)
,$description);
But of course it's a matter of how far you want to go.