fork(2) download
  1. <?php
  2.  
  3. $visual = "5*(1+0+1+0+1)+5*(1+0+5+0*3)+(0)*5";
  4. //Если делать в несколько шагов, то:
  5.  
  6. // убираю нули, множитель и лидирующий плюс
  7. $regexp = '/\+?(?:\d+\*)?0/';
  8. $visual = preg_replace($regexp, '', $visual); // 5*(+1+1)+5*(+5)+5*()
  9.  
  10. // убираю `+` сразу после скобки
  11. $regexp = '/(?:\()\+/';
  12. $visual = preg_replace($regexp, '(', $visual); // 5*(1+1)+5*(5)+5*()
  13.  
  14. // убираю скобки, если внутри только одно число
  15. $regexp = '/\((\d)\)/';
  16. $visual = preg_replace($regexp, '\1', $visual); // 5*(1+1)+5*5+5*()
  17.  
  18. // убираю скобки и множитель, если в скобках ничего
  19. $regexp = '/\+?\d+\*\(\)/';
  20. $visual = preg_replace($regexp, '\1', $visual); // 5*(1+1)+5*5
  21. echo $visual;
Success #stdin #stdout 0.03s 52480KB
stdin
Standard input is empty
stdout
5*(1+1+1)+5*(1+5*3)+()*5