PCRE regex syntax
Code:
$fdata = preg_replace("/&(.+?);/", "&\\1;", $fdata);
nou heb ik de online php manual bestudeerd, maar kom er niet helemaal uit.
- als patroon begrijp ik hieruit: alle HTML special characters
- als replacement begrijp ik slechts de & en niet de \\1
Wie weet hoe er exact wordt gereplaced hier.
En \\1 is de 'ouderwetse' vorm van $1, het deel tussen de haakjes.
Staat daar bijv. amp, dan komt dat ook in \\1 te staan.
Alleen wat voor zin heeft het?
Je vervangt bijv. & door & :?
Gewijzigd op 03/06/2005 19:03:00 door Mitch X
preg_replace("/&(.+?);/", "&\\1;", $fdata);
is dus verder heel behoorlijk script, dus daarom verwachtte ik ook niet zo iets mafs,
maar wordt alles dan vervangen door & ???
die $ duidt toch alleen op eeen eind van een string ?!
En ja, alles wordt vervangen voor &[iets]
Bijv.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$blaat = '&erwaseenseenkoe;';
# Jouw replace erover
$blaat = preg_replace("/&(.+?);/", "&\\1;", $blaat);
# $blaat = '&erwaseenseenkoe';
?>
$blaat = '&erwaseenseenkoe;';
# Jouw replace erover
$blaat = preg_replace("/&(.+?);/", "&\\1;", $blaat);
# $blaat = '&erwaseenseenkoe';
?>
vreemd ?
Het gaat om een goed editor-script dat een file leest en de inhoud 'echoot' naar een textarea,
ik begreep dat de replacements waren ter beveiliging van aanhalingstekens en slashes e.d.
$fdata = fread($fp, filesize($full));
fclose($fp);
// Convert entities so they display correctly
$fdata = str_replace ("</textarea>", "</textarea>", $fdata);
// A small fix so that the form isn't screwed up
$fdata = preg_replace("/&(.+?);/", "&\\1;", $fdata);
$fdata = str_replace("\\", "\\\\", $fdata);
mbv. een template krijg je dan:
<textarea ...> {FDATA}</textarea>
Het werkt allemaal goed, maar nu probeer ik dus
de file te openen en de inhoud naar de online FCKeditor te sturen, die is geweldig maar nogal gecompliceerd, daar moet je de $fdata als value aan een hidden field geven
dus: <input .... value={FDATA}
en daar gaat het de hele tijd mis,
FCK-editor kent de value toe via een HTML encode functie:
FCKeditor.prototype._HTMLEncode = function( text )
{
if ( typeof( text ) != "string" )
text = text.toString() ;
text = text.replace(/&/g, "&") ;
text = text.replace(/"/g, """) ;
text = text.replace(/</g, "<") ;
text = text.replace(/>/g, ">") ;
text = text.replace(/'/g, "'") ;
return text ;
}
ik moet een systeem replace ontwikkelen dat de communicatie pleegt tussen: de editor , die voor de gebruiker gewone tekst toont
en de php die het opslaan en openen doet,
nu gaat het dus steeds mis ,
denk je dat ik die maffe replace eruit kan gooien ?
ik vrees dat ik dingen over het hoofd zie.
ik bedoel dus die php replace niet de FCK replace