PageRenderTime 42ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/quicky/classes/plugins/outputfilter.trimwhitespace.php

https://bitbucket.org/seyar/parshin.local
PHP | 46 lines | 30 code | 8 blank | 8 comment | 2 complexity | 617dba288bd75198330a7ec8800f4235 MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-2.1
  1. <?php
  2. function quicky_outputfilter_trimwhitespace($source,$quicky)
  3. {
  4. // Pull out the script blocks
  5. preg_match_all("!<script[^>]+>.*?</script>!is", $source, $match);
  6. $_script_blocks = $match[0];
  7. $source = preg_replace("!<script[^>]+>.*?</script>!is",
  8. '@@@quicky:TRIM:SCRIPT@@@', $source);
  9. // Pull out the pre blocks
  10. preg_match_all("!<pre>.*?</pre>!is", $source, $match);
  11. $_pre_blocks = $match[0];
  12. $source = preg_replace("!<pre>.*?</pre>!is",
  13. '@@@quicky:TRIM:PRE@@@', $source);
  14. // Pull out the textarea blocks
  15. preg_match_all("!<textarea[^>]+>.*?</textarea>!is", $source, $match);
  16. $_textarea_blocks = $match[0];
  17. $source = preg_replace("!<textarea[^>]+>.*?</textarea>!is",
  18. '@@@quicky:TRIM:TEXTAREA@@@', $source);
  19. // remove all leading spaces, tabs and carriage returns NOT
  20. // preceeded by a php close tag.
  21. $source = trim(preg_replace('/((?<!\?>)\n)[\s]+/m', '\1', $source));
  22. // replace textarea blocks
  23. quicky_outputfilter_trimwhitespace_replace("@@@quicky:TRIM:TEXTAREA@@@",$_textarea_blocks, $source);
  24. // replace pre blocks
  25. quicky_outputfilter_trimwhitespace_replace("@@@quicky:TRIM:PRE@@@",$_pre_blocks, $source);
  26. // replace script blocks
  27. quicky_outputfilter_trimwhitespace_replace("@@@quicky:TRIM:SCRIPT@@@",$_script_blocks, $source);
  28. return $source;
  29. }
  30. function quicky_outputfilter_trimwhitespace_replace($search_str, $replace, &$subject) {
  31. $_len = strlen($search_str);
  32. $_pos = 0;
  33. for ($_i=0, $_count=count($replace); $_i<$_count; $_i++)
  34. if (($_pos=strpos($subject, $search_str, $_pos))!==false)
  35. $subject = substr_replace($subject, $replace[$_i], $_pos, $_len);
  36. else
  37. break;
  38. }