Advertisement
roysa99

RTF2XML

Dec 3rd, 2011
401
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.04 KB | None | 0 0
  1. <?php
  2.  
  3. $file_input = '1.rtf';
  4.  
  5. #$dat = file_get_contents($file_input);
  6.  
  7. $dat = '{rtf1 ololo {blah1 ololo lololo {tb ab}} homoto {td aaa}}';
  8.  
  9. echo "<textarea style='width: 100%;'>$dat</textarea>";
  10.  
  11. $replaces = 0;
  12.  
  13. function parse(&$dat, &$rc)
  14. {
  15.     $s = preg_match('/\{(.*)?(.*)?\}/', $dat, $sub);
  16.     if (($rc == 5) || ($s == 0)) return;
  17.     else {
  18.         $rc++;
  19.         $dat = preg_replace_callback('/\{(.*)?(.*)?\}/', function($d){
  20.             $s = $d[0];
  21.             preg_match('/^\{\w*/', $s, $tag);
  22.             $tag = ltrim($tag[0], '{ ');
  23.             $s = preg_replace('/^\{\w*/', '<' . $tag . '>', $s);
  24.             $sl = strlen($s);
  25.             $ot = 0;
  26.             $et = 0;
  27.             for ($i=0; $i<$sl; $i++) {
  28.                 if ($s[$i] == '{') {
  29.                     $ot++;
  30.                 } elseif ($s[$i] == '}') {
  31.                     --$ot;
  32.                     $et = $i;
  33.                 }
  34.                 if (($ot == -1) && ($et > 0)) break;
  35.             }
  36.             $s1 = substr($s, 0, $et);
  37.             $s1 .= '</' . $tag . '>';
  38.             $s = $s1 . substr($s, $et + 1, $sl - $et);
  39.             return $s;
  40.         }, $dat, 1);
  41.         parse($dat, $rc);
  42.     }
  43. }
  44.  
  45. parse($dat, $replaces);
  46.  
  47. echo "<textarea style='width: 100%;'>$dat</textarea>";
  48.  
  49. ?>
  50.  
  51.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement