code probleem
W0etah - 03/12/2006 20:22 (laatste wijziging 03/12/2006 21:08)
PHP beginner
Ik probeer nu een ubb te maken voor een php script, maar dit wilt echt niet lukken, ziet iemand wat ik fout doe?
$bericht = preg_replace("/\[php\](.+?)\[\/php\]/is", highlight_string('\\1', true), $bericht);
$output = $bericht;
edit:
$bericht = preg_replace("/\[php\](.*)\[\/php\]/se", "@highlight_string('\\1', 1)", $bericht);
$bericht = preg_replace ( "/\[php\](.*)\[\/php\]/se" , "@highlight_string('\\1 ', 1)" , $bericht ) ;
maar nu geeft hij dit weer:
terwijl die \ daar helemaal niet mag staan
2 antwoorden
Gesponsorde links
Thomas - 04/12/2006 11:54 (laatste wijziging 04/12/2006 11:55)
Moderator
Voordat je je patroon wilt laten evalueren moet je ge-escapete dubbele quotes strippen uit je match.
Zoiets dus:
<?php
$bericht = preg_replace("/\[php\](.*)\[\/php\]/se", "str_replace('\"', '', @highlight_string('\\1', 1))", $bericht);
?>
<?php
$bericht = preg_replace ( "/\[php\](.*)\[\/php\]/se" , "str_replace('\" ', '', @highlight_string('\\1 ', 1))" , $bericht ) ; ?>
Als ik jou was zou ik een aparte functie maken voor het str_replace(...)-gedeelte, dat maakt e.e.a. overzichtelijker.
Als je wilt heb ik een werkend voorbeeld (wat ook op deze site gebruikt wordt - het forum heb ik gemaakt).
EDIT: Ik zou ook de U-switch (dus /seU) toevoegen om de match un-greedy te maken. Het zou nl. best kunnen zijn dat je bericht meerdere PHP-blokken bevat. Deze zouden in jouw variant verkeerd gematched worden.
W0etah - 04/12/2006 17:33
PHP beginner
neej, dat blijft hetzelfde, ik zal ff heel mijn functie posten
<?php
function vieuwFile($path, $user, $file) {
if(!file_exists($path.'/'.$user.'/'.$file)) {
$bericht = "Het bestand $file bestaat niet";
} else {
$fileOpen = fopen($path.'/'.$user.'/'.$file, 'r');
$bericht = fread($fileOpen, filesize($path.'/'.$user.'/'.$file));
$bercht = htmlspecialchars($bericht);
$bericht = preg_replace("/\[php\](.*)\[\/php\]/seU", "str_replace('\"', '', @highlight_string('\\1', 1))", $bericht);
$output = $bericht;
fclose($fileOpen);
}
return $output;
}
?>
<?php
function vieuwFile( $path , $user , $file ) {
$bericht = "Het bestand $file bestaat niet" ;
} else {
$fileOpen = fopen ( $path . '/' . $user . '/' . $file , 'r' ) ; $bericht = fread ( $fileOpen , filesize ( $path . '/' . $user . '/' . $file ) ) ; $bericht = preg_replace ( "/\[php\](.*)\[\/php\]/seU" , "str_replace('\" ', '', @highlight_string('\\1 ', 1))" , $bericht ) ; $output = $bericht ;
}
return $output ;
}
?>
Gesponsorde links
Dit onderwerp is gesloten .