hi,
I can't test it now either, but I think it should be possible with just one call to preg_replace
// if the style attribute always comes right after table
// and the width definition is always defined first within it
$string=preg_replace('/(<table style="width: (\d{4,}|[6-9]\d{2})px;/', '<table style="width: 600px;', $string);
// else it gets slightly more complicated
$string=preg_replace('/(<table (.*? )style="(.*? )width: (\d{4,}|[6-9]\d{2})px;/', '<table $1style="$2width: 600px;', $string);
if the table tags may span over multiple lines, use the s modifier in the 2nd pattern, and if uppercase tags may occur, the i modifier in both.
both patterns actually match 600 which would not need to be replaced, but it shouldn't hurt to replace 600 with 600 😉