fork(1) download
  1. <?php
  2.  
  3. $result="";
  4.  
  5. $str = 'vinte cinco reais e vinte cinco centavos';
  6.  
  7. //regex
  8. //Primeiro usa o trim() para limpar os espaços do início e do final da string.
  9. //preg_replace() para remover os espaços duplicados.
  10. //O caracter de escape \s significa "qualquer espaço em branco".
  11. //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.
  12.  
  13. $str=trim(preg_replace('/\s(?=\s)/', '', $str));
  14.  
  15. //substitue todos os caracteres " e " por " " na string
  16. $str = str_replace(" e ", " ", $str);
  17.  
  18. //cria array
  19. $a = explode(" ",$str);
  20.  
  21.  
  22. //itero o array e concateno o caractere "e" quando necessario
  23. for($i=0; $i < count($a); $i++){
  24.  
  25. //interrompe o laço for para evitar o erro Notice: Undefined offset para "$a[$i+1]" caso fosse realizado a ultima iteraçao
  26. if($i == count($a)-1){
  27. $result = $result . $a[$i];
  28. break;
  29. }
  30.  
  31. //concateno o caractere "e" quando necessario
  32. if (($a[$i+1]=="reais")||($a[$i+1]=="mil")||($a[$i+1]=="centavos")){
  33. $result = $result . $a[$i] . " ";
  34. }else{
  35. $result = $result . $a[$i] . " e ";
  36. }
  37.  
  38. }
  39.  
  40. echo $result;
Success #stdin #stdout 0.02s 82944KB
stdin
Standard input is empty
stdout
vinte e cinco reais e vinte e cinco centavos