Multiple excerpts with the same formatting as the_excerpt();

I am looking for a function that will allow me to place multiple excerpts with different lengths throughout my theme. I have found this code:

function custom_excerpt($charlength) {
  $excerpt = get_the_excerpt();
  if(strlen($excerpt)>$charlength) {
    $subex = substr($excerpt,0,$charlength-5);
    $exwords = explode(" ",$subex);
    $excut = -(strlen($exwords[count($exwords)-1]));
  if($excut<0) {
    echo substr($subex,0,$excut);
  } else {
    echo $subex;
    echo "... <a href=" . get_permalink($post->ID) . " class='more-link' title='Read" .get_the_title($post->ID)."'>Read more &raquo;</a>";
  } else {
    echo $excerpt;

This is almost there but i would like the text wrapped inside p tags like the original the_excerpt and also have the 3 dots come directly after the text, not have a space. After that it should replicate what the original function does. If you could advise what needs doing to get it to this state that'd be great.

Many thanks