folgende sachlage: für eine eigene doku hab ich mir das wiki installiert. dort sind allerdings
keine tags zum ausführen von php-code vorgesehen. (is auch irgendwo verständlich).
ich hätte das aber gern.
dazu hab ich mir die php-stelle im wiki rausgesucht, wo der eigentliche inhalt ausgegeben wird und da zapfe ich an.
der string wird zerlegt, bis ich die eigentliche zeile der code-ausführung habe, z.b.
$code = ' echo "hallo";';
diese stück code jage ich jetzt durch den php-cli (nicht mit eval, damit der wiki-php-code nicht "gestört" wird) zeile 22
Code: Alles auswählen
1 <?php
2 function wikiPhpBlock($str) {
3 $phpStartTag = '[PHP]';
4 $phpEndTag = '[/PHP]';
5 $lenStart = strlen($phpStartTag);
6 $lenEnd = strlen($phpEndTag);
7
8 $found = true;
9 $current = 0;
10 $out = '';
11 while($found){
12 $found = false;
13 $posStartTag = strpos($str, $phpStartTag, $current);
14 if($posStartTag !== false){
15 $posEndTag = strpos($str, $phpEndTag, $posStartTag+$lenStart);
16 if($posEndTag !== false){
17 if($posStartTag>$current){
18 $out.= substr($str,$current, $posStartTag-$current);
19 }
20 $code = substr($str, $posStartTag+$lenStart, $posEndTag-$posStartTag-$lenStart );
21 $code = addslashes(html_entity_decode($code));
22 $out.= shell_exec('php -r "'.$code.'"')."\n";
23 $found = true;
24 $current = $posEndTag + $lenEnd;
25 }
26 else{
27 $out.= substr($str, $current);
28 }
29 }
30 else{
31 $out.= substr($str, $current);
32 }
33 }
34 return $out;
35 }
36 ?>
ich hoffe mal, ich habs nachvollziehbar erläutert
irgend jemand eine idee?