[PHP] Php tags strippen met php

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Ik open met behulp van file_get_contents; een php script. Nu moet ik ervoor zorgen dat alles tussen <?, ?>, <?PHP en PHP?> wordt verwijderd.

Weet iemand hoe ik dat precies kan doen? Ik zat te denken aan preg_replace, maar dan krijg ik allerlei errors. Ik weet niet precies hoe ik die tekens kan escapen. Iemand een oplossing?

Ik heb nu zoiets:
$str = preg_replace ("\<\?.*.\?\>", "", $str );

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
exploden op die tekens en dan hetgeen er tussen uit de array halen?

Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Moet je alles strippen tussen die 2 tags of moet je juist die 2 tags eraf halen?

Als je alle moet strippen tussen die 2 tags: Geen flauw idee :)

Als die 2 tags gestript moeten worden: str_replace('<?'. '', $file_content); & str_replace('?>'. '', $file_content);

[ Voor 23% gewijzigd door AtleX op 17-12-2004 16:11 ]

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
str_replace( '<? ?>', '', $file_content);
Gaat niet werken als er iets tussen staat volgens mij?

Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
AtleX schreef op vrijdag 17 december 2004 @ 16:10:
Moet je alles strippen tussen die 2 tags of moet je juist die 2 tags eraf halen?

Als je alle moet strippen tussen die 2 tags: str_replace( '<? ?>', '', $file_content);

Als die 2 tags gestript moeten worden: str_replace('<?'. '', $file_content); & str_replace('?>'. '', $file_content);
Ja alles moet weg. Ik ga het even testen. Het ziet er wel eenvoudig uit. Eh, nee dat gaat nooit werken zie ik al.
djluc schreef op vrijdag 17 december 2004 @ 16:08:
exploden op die tekens en dan hetgeen er tussen uit de array halen?
Misschien als laatste redmiddel. Maar de hele zooi een aantal keer exploden en vervolgens weer samenvoegen lijkt me wat overdreven.

[ Voor 45% gewijzigd door Noork op 17-12-2004 16:13 ]


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

djluc schreef op vrijdag 17 december 2004 @ 16:11:
[...]
Gaat niet werken als er iets tussen staat volgens mij?
Noork schreef op vrijdag 17 december 2004 @ 16:11:
[...]

Ja alles moet weg. Ik ga het even testen. Het ziet er wel eenvoudig uit. Eh, nee dat gaat nooit werken zie ik al.
Dat zag ik ook al, maar net te laat :X. Helaas heb ik nu niet de beschikking over een webserver waarop ik even kan testen, dus met je probleem kan ik je jammer genoeg niet verder helpen :(

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

Verwijderd

$string = preg_replace( '/<\?php(([^>]|n)*)\?>/', '', $string );

Dat zou het zo ongeveer moeten doen.

Iets in die aard?

Weer een edit:
Als je <??> <?PHP PHP?> ook weg wilt pas je dit maar aan he. Dit doet <?php // blaat ?> weg.

[ Voor 186% gewijzigd door Verwijderd op 17-12-2004 16:37 . Reden: deze keer wel met goeie regex ]


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Verwijderd schreef op vrijdag 17 december 2004 @ 16:21:
$string = preg_replace( '/<\?php(([^>]|n)*)\?>/', '', $string );

Dat zou het zo ongeveer moeten doen.

Iets in die aard?

Weer een edit:
Als je <??> <?PHP PHP?> ook weg wilt pas je dit maar aan he. Dit doet <?php // blaat ?> weg.
Thanxs zeg. Hier was ik zelf al een tijdje mee zoet.

Ik heb er nu maar even 3 gemaakt:
$str = preg_replace( '/<\?php(([^>]|n)*)\?>/', '', $str );
$str = preg_replace( '/<\?PHP(([^>]|n)*)\?>/', '', $str );
$str = preg_replace( '/<\?(([^>]|n)*)\?>/', '', $str );

Meestal gebruik ik de onderste notatie.

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Noork schreef op vrijdag 17 december 2004 @ 16:40:
[...]

Thanxs zeg. Hier was ik zelf al een tijdje mee zoet.

Ik heb er nu maar even 3 gemaakt:
$str = preg_replace( '/<\?php(([^>]|n)*)\?>/', '', $str );
$str = preg_replace( '/<\?PHP(([^>]|n)*)\?>/', '', $str );
$str = preg_replace( '/<\?(([^>]|n)*)\?>/', '', $str );

Meestal gebruik ik de onderste notatie.
Is alleen de onderste niet voldoende?

Hoe zit het met volgende tags?
code:
1
2
3
4
<script language="php">
       echo ("some editors (like FrontPage) don't
             like processing instructions");
   </script>


En als je ASP style hebt aan staan moeten die dan ook niet filterd worden?

Wat doe je met XML files?
<?xml version="1.0"?>

[ Voor 27% gewijzigd door LuCarD op 17-12-2004 16:58 ]

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 19-09 22:18

chem

Reist de wereld rond

Ipv 3 is 1 wel mooier
PHP:
1
$str = preg_replace('~<\?(php|\s+)?(.*?)\?>~i',$str);

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
chem schreef op vrijdag 17 december 2004 @ 17:04:
Ipv 3 is 1 wel mooier
PHP:
1
$str = preg_replace('~<\?(php|\s+)?(.*?)\?>~i',$str);
Je vergeet de '='

Als in:
PHP:
1
<?=$var?>

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Grijze Vos schreef op vrijdag 17 december 2004 @ 17:06:
[...]


Je vergeet de '='

Als in:
PHP:
1
<?=$var?>
Oftewel:
PHP:
1
$str = preg_replace('~<\?(php|\s+|=)?(.*?)\?>~i',$str);
;)

[ Voor 6% gewijzigd door Spider.007 op 17-12-2004 17:28 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Spider.007 schreef op vrijdag 17 december 2004 @ 17:08:
[...]


Oftewel:
PHP:
1
$str = preg_replace('~<\?(php|\s+|=)?(.*?)\?>~i',$str);
;)
Dat werkt voor geen ene drol.

En Lucard, xml en andere scriptjes gebruik ik niet. Het ging erom dat ik een soort preview functie nodig heb. Hiervoor moest ik even de sessionrommel en bezoekersteller uit de header halen.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

PHP:
1
2
$str = file_get_contents('./test.php');
$str = preg_replace('/<\?(php|\s+|=)?(.*?)\?>/s','',$str);

werkt prima... (let op de s-modifier)

[ Voor 9% gewijzigd door crisp op 17-12-2004 19:02 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Vold
  • Registratie: September 2001
  • Laatst online: 22-01 23:04
Waarom niet gewoon:
$string = strip_tags($string);

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Vold schreef op vrijdag 17 december 2004 @ 19:00:
Waarom niet gewoon:
$string = strip_tags($string);
Omdat je dan ook alle HTML code eruit haalt; en dat is waarschijnlijk ongewenst? :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

Verwijderd

crisp schreef op vrijdag 17 december 2004 @ 17:26:
PHP:
1
2
$str = file_get_contents('./test.php');
$str = preg_replace('/<\?(php|\s+|=)?(.*?)\?>/s','',$str);

werkt prima... (let op de s-modifier)
DOTALL, ja. Maar nu heb je de de case-insentivity van de opening tag <?php vergeten. Er moet dus nog een `i' bij.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

1x teveel op delete gedrukt bij het vervangen van de ~ voor / (ik ga altijd voor mijn eigen favo delimiter omdat het ook zo lekker copy-paste naar JS) ;)

Intentionally left blank

Pagina: 1