Ik gebruik de functie eval voor het parsen van php uit een database. deze php wordt aangeleverd door html heen en ik gebruik een custom functie om dit allemaal te doen:
de functie pakt een string, echoed de html draait de php en geeft de gevonden php terug. hij ziet er zo uit....
nu is deze code in samenwerking met een tweede persoon tot stand gekomen omdat ik weinig kaas van preg_matching heb gegeten. ik loop nu alleen tegen een probleem aan.
Als er als input een lap html+php wordt gegeven voert hij deze vlekkeloos uit, voorbeeld:
maar als een newline in de php zit parsed hij dit niet, voorveeld:

Hoe komt dit, en hoe kan ik dit oplossen?
de functie pakt een string, echoed de html draait de php en geeft de gevonden php terug. hij ziet er zo uit....
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| <?php //func_evalecho.php function evalecho($aPHP){ // Search for PHP $aNormalSTR=preg_split('/<\?php(.*?)\?>/i', $aPHP, -1, PREG_SPLIT_OFFSET_CAPTURE); for($i = 0; $i < count($aNormalSTR); $i++){ echo $aNormalSTR[$i][0]; if(count($aNormalSTR) > 1){ $aFirstPHPPointer = ((int) $aNormalSTR[$i][1] + (int) strlen($aNormalSTR[$i][0])); $aSecondPHPPointer = ($aNormalSTR[($i+1)][1] - ($aNormalSTR[$i][1] + strlen($aNormalSTR[$i][0]))); $a2EXE=substr($aPHP, $aFirstPHPPointer, $aSecondPHPPointer); $a2EXE=str_replace('<?php','',$a2EXE); $a2EXE=str_replace('?>','',$a2EXE); eval($a2EXE); $php_matches[]=$a2EXE; } } return $php_matches; } ?> |
nu is deze code in samenwerking met een tweede persoon tot stand gekomen omdat ik weinig kaas van preg_matching heb gegeten. ik loop nu alleen tegen een probleem aan.
Als er als input een lap html+php wordt gegeven voert hij deze vlekkeloos uit, voorbeeld:
code:
1
2
| <?php echo"hoi"; echo "hoi";?> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce porta. Fusce viverra tempor tortor. In libero erat, rhoncus |
maar als een newline in de php zit parsed hij dit niet, voorveeld:
code:
1
2
3
| <?php echo"hoi"; ?> |

Hoe komt dit, en hoe kan ik dit oplossen?
[ Voor 8% gewijzigd door Verwijderd op 01-05-2009 16:33 ]