Change some charachter in All field before saving node I want done a action (change some charachter) on every field in saving node.
I know for specified field can use hook_node_presave ,but I want do this on all field in all content type (proximity 300 field  and 40 content types) with out specify one by one .
Have drupal api for hook_filed_presave or something like it?

This is work for specified field 

function custom_changes_node_presave($node){

    if ($node-&gt;type ==='designer_background_images'){

        $filename =$node-&gt;original-&gt;field_db_image['und']['0']['filename'];
        $uri       =$node-&gt;original-&gt;field_db_image['und']['0']['uri'];

        $filename    = str_replace (" ", "_", $filename);
        $uri        = str_replace (" ", "_", $uri);

        $node-&gt;original-&gt;field_db_image['und']['0']['filename']= $filename;
        $node-&gt;original-&gt;field_db_image['und']['0']['uri']       = $uri;

        //field_attach_presave('node', $node);

            // And the actual field change for the given node (e.g. entity).

        //field_attach_update('node', $node);

        // echo "&lt;pre&gt;";
            // print_r($node);
        // exit;
        // print $node-&gt;original-&gt;field_db_image['und']['0']['filename'];
        // print $node-&gt;original-&gt;field_db_image['und']['0']['uri'];
    }
}
You're probably looking for hook_entity_presave():


  Act on an entity before it is about to be created or updated.


It's equivalent to hook_node_presave(), but as the name suggests is run for all entity types.

From there you can use the Field Info API functions to get a list of fields that should be attached to that entity, then loop through them and do the character replacement.