fork download
  1. <?php
  2.  
  3. $string = "Boa __tarde__ **Bacco**, isto é um **teste** com diversos **negritos** e __sublinha_dos__
  4.  
  5. __**um** dois__ **__um__ dois**
  6. __aqui nao_funciona __ __ nem_aqui,pois está errado__
  7. __aqui está certo__ ___errado__ __ce rto__";
  8.  
  9. preg_match_all("/(.?)(\*\*([^\*\s]+\s*\*?)*[^\s\*]+\*\*)([^\*]|$)/", $string, $resultNegrito);
  10.  
  11. $negrito = $resultNegrito[2];
  12. $iniNegrito = $resultNegrito[1]; // valores do grupo (.?)
  13. for($x = 0; $x < count($negrito); $x++){
  14. if($iniNegrito[$x] != "*"){
  15. $res = "<b>".substr($negrito[$x],2,strlen($negrito[$x]) -4)."</b>";
  16. $string = str_replace($negrito[$x],$res,$string);
  17. }
  18. }
  19.  
  20. preg_match_all("/(.?)(__([^_\s]+\s*_?)*[^\s_]+__)([^_]|$)/", $string, $resultSublinhado);
  21.  
  22. $sublinhado = $resultSublinhado[2];
  23. $iniSublinhado = $resultSublinhado[1]; // valores do grupo (.?)
  24. for($x = 0; $x < count($sublinhado); $x++){
  25. if($iniSublinhado[$x] != "_"){
  26. $res = "<u>".substr($sublinhado[$x],2,strlen($sublinhado[$x]) -4)."</u>";
  27. $string = str_replace($sublinhado[$x],$res,$string);
  28. }
  29. }
  30.  
  31. echo $string;
Success #stdin #stdout 0.03s 23816KB
stdin
Standard input is empty
stdout
Boa <u>tarde</u> <b>Bacco</b>, isto é um <b>teste</b> com diversos <b>negritos</b> e <u>sublinha_dos</u>

		<u><b>um</b> dois</u>  <b><u>um</u> dois</b>
		__aqui nao_funciona __ __ nem_aqui,pois está errado__
		<u>aqui está certo</u> ___errado__ <u>ce  rto</u>