%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www_old/
Upload File :
Create Path :
Current File : //var/www_old/doku2mw.php__b81eaf3

<?php
if(isset($_POST['text']))
{
	header("Content-Type: text/plain");
  $in_table=false;

  $lines = explode("\n", $_POST['text']);
  $linecount = count($lines);

  while (++$i<$linecount)
  {
    if ($in_table) $row++;
    // replace headings
    $line = rtrim($lines[$i]);
    if (preg_match('/^ *======.*====== *$/',$line))
    {
      $line=preg_replace('/^ *======/','=',$line);
      $line=preg_replace('/====== *$/','=',$line);
    }
    elseif (preg_match('/^ *=====.*===== *$/',$line))
    {
      $line=preg_replace('/^ *=====/','==',$line);
      $line=preg_replace('/===== *$/','==',$line);
    }
    elseif (preg_match('/^ *====.*==== *$/',$line))
    {
      $line=preg_replace('/^ *====/','===',$line);
      $line=preg_replace('/==== *$/','===',$line);
    }
    elseif (preg_match('/^ *===.*=== *$/',$line))
    {
      $line=preg_replace('/^ *===/','====',$line);
      $line=preg_replace('/=== *$/','====',$line);
    }
    elseif (preg_match('/^ *==.*== *$/',$line))
    {
      $line=preg_replace('/^ *==/','=====',$line);
      $line=preg_replace('/== *$/','=====',$line);
    }
    // end of replace headings

    // replace bulletpoints
    $level=0; // level of bulletpoints, e.g. * is level 1, *** is level 3.
    while (preg_match('/^(  )+\*/',$line))
    {
      $line=preg_replace("/^  /","",$line);
      $level++;
    }
    while ($level>1)
    {
      $line="*".$line;
      $level--;
    }
    // end of replace bulletpoints

    // replace ordered list items
    $level=0; // level of list items, e.g. - is level 1, --- is level 3.
    while (preg_match('/^(  )+\-/',$line))
    {
      $line=preg_replace("/^  /","",$line);
      $level++;
      $line=preg_replace("/^-/","#",$line);
    }

    while ($level>1)
    {
      $line="#".$line;
      $level--;
    }
    // end of replace ordered list items

    // replace //
    $line=preg_replace("/\/\//","''",$line);
    // end of replace //

    // replace **
    $line=preg_replace("/\*\*/","'''",$line);
    // end of replace **

    // replace \\
    // thanks to Rakete Kalle
    $line=preg_replace("/\\\\\\\\ /","<br />",$line);
    // end of replace \\

    // begin care for tables
    if (preg_match("/^\|/",$line))
    {
      $line=preg_replace("/\| *$/","",$line);
      $line=preg_replace("/\n/","",$line);
      if (!$in_table)
      {
        $in_table=true;
        $row=1;
      }
      $cells[$row]=explode("|",preg_replace("/^\|/","",$line));
    }

    // have we left a table?
    if ((!preg_match("/^\|/",$line)) && $in_table)
    {
      $in_table=false;
      if ($headers!="")
      for ($n=0;$n<count($headers);$n=$n+1)
      {
        echo $headers[$n]; echo "|";
      }
      echo "\n";
      for ($y=1;$y<count($cells)+1;$y=$y+1)
      {
        for ($x=0;$x<count($cells[$y]);$x=$x+1)
        {
          echo $cells[$y][$x]; echo "|";
        }
        echo "\n";
      }
      echo "***** END *****\n";
      $rowspancells=$cells;

      // each cell's rowspan value is 1
      for ($y=1;$y<count($cells)+1;$y=$y+1)
        for ($x=0;$x<count($cells[$y]);$x=$x+1)
          $rowspancells[$y][$x]=1;

      // every cell that needs an attribute rowspan=x gets x as its rowspan value
      for ($y=1;$y<count($cells);$y=$y+1)
      {
        for ($x=0;$x<count($cells[$y]);$x=$x+1)
        {
          $z=1;
          while (($y+$z<=count($cells)) && (preg_match("/ *::: */",$cells[$y+$z][$x])))
          {
            $rowspancells[$y][$x]+=1;
            $z+=1;
          }
        }
      }

      // if the cell itself if :::, then its rowspan value is 0
      for ($y=1;$y<count($cells)+1;$y=$y+1)
        for ($x=0;$x<count($cells[$y]);$x=$x+1)
          if (preg_match("/ *::: */",$cells[$y][$x])) $rowspancells[$y][$x]=0;

      // display them
      for ($y=1;$y<count($cells)+1;$y=$y+1)
      {
        for ($x=0;$x<count($cells[$y]);$x=$x+1)
          echo $rowspancells[$y][$x];
        echo "\n";
      }

      // begin display the mediawiki table
      $tablesource="{| class=\"wikitable sortable\" border=1\n";
      if ($headers!="")
      {
        $tablesource.="!";
        for ($n=0;$n<count($headers);$n=$n+1)
        {
          $tablesource.=$headers[$n];
          if ($n<count($headers)-1) $tablesource.="!!";
        }
        $tablesource.="\n|-\n";
      }
      for ($y=1;$y<count($cells)+1;$y=$y+1)
      {
        $tablesource.="| ";
        for ($x=0;$x<count($cells[$y]);$x=$x+1)
        {
          if ($rowspancells[$y][$x]>=1)
    {
            if ($rowspancells[$y][$x]>1) $tablesource.="rowspan=".$rowspancells[$y][$x]."|";
      $tablesource.=$cells[$y][$x];
      if ($x<count($cells[$y])-1) $tablesource.=" || ";
    }
        }
        $tablesource.="\n|-\n";
      }
      $tablesource.="|}\n";
      echo $tablesource;
      $output.=$tablesource;
      //end display mediawiki table

      $headers="";
      $cells="";
      $row=0;
    } // endif have we left a table

    // replace tables
    if (preg_match("/^\^/",$line))
    {
      $in_table=true;
      $row=0; // the header row is row 0. It may exist or not.
      $line=preg_replace("/^\^/","",$line);
      $line=preg_replace("/\n/","",$line);
      $line=preg_replace("/\^$/","",$line);
      $headers=explode("^",$line);
    }

    if ($in_table) $line=""; // if this is in a table then the table's content will be stored in $headers and $cells
    // end care for tables

    echo $line . "\n";
  } //while (++$i<$linecount)
}
// is the end of file also an end of table?
if(!isset($_POST['text'])) {?>
<html>
	<head>
		<title>Add lines</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	</head>
	<body>
	<form action="doku2mw.php" method="post">
		<table width="700" border="0">
			<tr>
				<td>Text:</td>
				<td><textarea cols="90" rows="20" name="text"></textarea></td>
			</tr>
			<tr>
				<td>&nbsp;</td>
				<td><input type="submit" value="Submit" name="submit"></td>
			</tr>
		</table>
	</form>
	</body>
</html><?php } ?>

Zerion Mini Shell 1.0