Avatar billede loevstroem Nybegynder
02. august 2009 - 23:58 Der er 11 kommentarer og
1 løsning

Preg_replace expression

Kære Eksperter,

$file_id = preg_replace('/<offline>(.*?)<\/offline>/', '', $file_id);


Jeg forsøger at erstatte noget kode, såfremt mine "hjemmelavede" tags eksistere i koden.

Desværre fungere overstående eksempel ikke.

Hjælp søges :~)
Avatar billede Six Nybegynder
03. august 2009 - 05:03 #1
Hvis det er en linie som f.eks.
hej min server <offline>192.231.332.33</offline> er ikke online
så prøv med denne regex:

$file_id = preg_replace('/\<offline\>(.*?)\<\/offline\>/si', '', $file_id);
Avatar billede loevstroem Nybegynder
03. august 2009 - 11:03 #2
Funktionen bruges til at replace noget af min html hvis man ikke er logget ind.

Altså hvis man ikke er logget ind, skal koden "beskyttet" af <offline>en kode stump html her</offline> ikke vises.

if(!empty($_SESSION['id'])) {

$file = preg_replace('/<offline>(.*?)<\/offline>/', '', $file);

}

//output html
echo $file;


Nogle idéer?
Avatar billede zynzz Praktikant
03. august 2009 - 11:45 #3
mener du:

$file = preg_replace("/<offline>(.*?)<\/offline>/", "<offline>Du er ikke logget ind</offline>", $file);

???!
Avatar billede loevstroem Nybegynder
03. august 2009 - 12:01 #4
Måske jeg forvirrer mere end jeg gavner.

Et eksempel på noget output kode:
<offline><div>Du er ikke logget ind. Klik her for at logge ind</div></offline>

Overstående eksempel, med mine <offline> tags, fremtræder i min html kode.

Inden html koden bliver outputtet til brugeren, bliver den kørt igennem et PHP script.

Hvis man er logget ind (et simpelt if-statement), så skal indholdet af mine offline tags' erstattes af ingenting inden outputtet printes.
Avatar billede Six Nybegynder
03. august 2009 - 15:22 #5
hvad indeholder din $file?

for at preg_replace skal virke, skal $file indeholde koden fra den fil du  vil replace dine tags i.

f.eks. hvis det er hej.html

så skal du have noget ala.

$file_content = fopen("/hej.html", "r");

$file_content = preg_replace('/\<offline\>(.*?)\<\/offline\>/si', '<offline><div>Du er ikke logget ind. Klik her for at logge ind</div></offline>
', $file_content);
$fp = fopen('data.txt', 'w');
fwrite($fp, $file_content);
fclose($fp);
Avatar billede Six Nybegynder
03. august 2009 - 15:25 #6
data.txt skal selvfølgelig være hej.html ;)

$fp = fopen('hej.html', 'w');
Avatar billede Six Nybegynder
03. august 2009 - 15:27 #7
og hvis det skal indeholde ingenting skal replacen være

$file_content = preg_replace('/\<offline\>(.*?)\<\/offline\>/si', '', $file_content);

Som du jo rigtigt nok selv har lavet det :)
Avatar billede loevstroem Nybegynder
03. august 2009 - 18:19 #8
Fjappe en sand regex haj! tak for hjælpen
Avatar billede loevstroem Nybegynder
03. august 2009 - 18:20 #9
Godkendt
Avatar billede loevstroem Nybegynder
03. august 2009 - 18:21 #10
Gider du prøve at smide et svar mere? Når jeg forsøger at markere, for at godkende dit svar sker der ingenting.
Avatar billede Six Nybegynder
03. august 2009 - 18:23 #11
Selv tak :)

Du skal lige huske at få lukket spørgsmålet igen :)
Avatar billede Six Nybegynder
03. august 2009 - 18:23 #12
her :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester