<?php

	$result="";
	
	$str = 'mil cento dez'; 
	
	//regex
	//Primeiro usa o trim() para limpar os espaços do início e do final da string.
	//preg_replace() para remover os espaços duplicados.
	//O caracter de escape \s significa "qualquer espaço em branco".
	//A notação (?=) é usada para realizar pesquisa adiante. Na prática ele significa "qualquer espaço que é seguido por outro espaço". Isso remove os duplicados, deixando apenas um espaço em branco.
	
	$str=trim(preg_replace('/\s(?=\s)/', '', $str));
	
	//substitue todos os caracteres " e " por " " na string
	$str = str_replace(" e ", " ", $str);
	
	//cria array
	$a = explode(" ",$str);
	
	
	//itero o array e concateno o caractere "e" quando necessario
	for($i=0; $i < count($a); $i++){
		  
		  //interrompe o laço for para evitar o erro Notice: Undefined offset para "$a[$i+1]" caso fosse realizado a ultima iteraçao
		  if($i == count($a)-1){
			$result = $result . $a[$i];
			break;
		  }
		  
		  //concateno o caractere "e" quando necessario
		  if (($a[$i+1]=="reais")||($a[$i+1]=="mil")||($a[$i+1]=="centavos")||($a[$i+1]=="cento")){
		    $result = $result . $a[$i] . " ";
		  }else{
		  	$result = $result . $a[$i] . " e ";
		  }
	
	}
	
	echo $result;