str_replace (chr(000)," ",$source_data);

oltre al fatto che forse basterebbe chr(0) (un solo zero) non riassegni la variabile (svistona?)

$source_data = str_replace (chr(000)," ",$source_data);


cmq per i caratteri "particolari" io di solito uso preg


$data = preg_replace("/\x00/", " ", $data);



P.S. verifica anche che ci sia il null che di solito le funzioni su stringa si fermano proprio quando lo trovano

... if(preg_match("/\x00/", $source_data)) ... altrimenti devi usare una addcslashes per vedere cosa legge il php al posto del null