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