Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Bug] PHP-tag in string wordt vreemd weergegeven

Pagina: 1
Acties:
  • 37 views sinds 30-01-2008

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Topicstarter
Net een week na mijn vorige bugreport m.b.t. de PHP-parser, mag ik alweer een nieuwe posten. Zie PHP welke characters escapen?. Zoals je ziet parset het volgende niet echt goed:
PHP:
1
$content = "<?php include($_SERVER['DOCUMENT_ROOT'] . '/nabestelservice/includes/index.php'); ?>";

Nou komt het natuurlijk niet al teveel voor dat je PHP-tags in een string wil afdrukken, maar het komt blijkbaar toch voor, en het leidde in het topic dat ik noemde toch tot wat verwarring. Misschien is het handig om even een check uit te voeren om te kijken of <?php zich niet in een string bevindt?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

-NMe- schreef op woensdag 26 januari 2005 @ 22:38:
Misschien is het handig om even een check uit te voeren om te kijken of <?php zich niet in een string bevindt?
hij moet gewoon alles tussen die quotes als string zien, niet als code ;)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Topicstarter
Erkens schreef op donderdag 27 januari 2005 @ 10:56:
hij moet gewoon alles tussen die quotes als string zien, niet als code ;)
Dat sowieso, maar ik denk dat dit een beetje een geval apart is, omdat er gekeken wordt in de code of er <?php in voorkomt of niet. Zie onderstaande:
PHP:
1
echo "Dit alternatief is zonder PHP-tag";

PHP:
1
2
3
<?php
  echo "Dit alternatief is met PHP-tag";
?>

Omdat hierop door de highlighter gecontroleerd wordt, kan het probleem iets moeilijker liggen dan alles wat tussen quotes staan als string aanmerken, al is dat natuurlijk wel waar je naartoe wil. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Ik snap je laatste voorbeeld niet?
Maar wat Erkens zegt is gewoon de algemene oplossing, alles na ' of " is string, totdat je dezelfde type 'of " zonder escape ziet. Binnen een string parse je geen andere dingen.

[ Voor 9% gewijzigd door Voutloos op 27-01-2005 14:44 ]

{signature}


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Voutloos schreef op donderdag 27 januari 2005 @ 14:43:
Ik snap je laatste voorbeeld niet?
wat hij bedoeld (en waar het ook fout gaat waarschijnlijk) is dat zodra je
code:
1
2
3
<?php
  echo "blaat";
?>

gebruikt in een php-tag dan zet de "parser" er niet automagisch <? en ?> omheen :)
PHP:
1
2
3
<?php
  echo "blaat";
?>


zie het verschil:
code:
1
echo "blaat";

PHP:
1
echo "blaat";


/offtopic

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Ok, maar het lijkt me dat dat het gewenste gedrag is voor de parser? 8)7 Als je gewoon geen andere dingen parst binnen een string is het ook niet relevant voor dit probleem.
edit:
Ja, uiteraard gaat hij daarop fout. Dit is gewoon 1 van de dingen die hij niet moet parsen in een string.

[ Voor 29% gewijzigd door Voutloos op 27-01-2005 14:59 ]

{signature}


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Voutloos schreef op donderdag 27 januari 2005 @ 14:52:
Ok, maar het lijkt me dat dat het gewenste gedrag is voor de parser? 8)7 Als je gewoon geen andere dingen parst binnen een string is het ook niet relevant voor dit probleem.
klopt, maar waarschijnlijk gaat hij daarop fout, hij ziet"<?php" en zet dus de parser aan ofzo, althans dat denk ik :)

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:38

crisp

Devver

Pixelated

er wordt op <\?(php)? gechecked omdat je binnen PHP natuurlijk ook uit PHP-mode kan springen:
PHP:
1
2
3
4
5
6
7
8
<?php

$title = 'blaat';

?>
<html>
  <head>
    <title><?php echo $title; ?></title>

[ Voor 5% gewijzigd door crisp op 27-01-2005 15:32 ]

Intentionally left blank


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:38

crisp

Devver

Pixelated

ergo:

PHP:
1
$content = "<?php include($_SERVER['DOCUMENT_ROOT'] . '/nabestelservice/includes/index.php'); ?>";

PHP:
1
2
3
<?php
$content = "<?php include($_SERVER['DOCUMENT_ROOT'] . '/nabestelservice/includes/index.php'); ?>";
?>


als je niet expliciet zelf de PHP open en sluittags opneemt weet de parser niet in welke context hij de code moet interpreteren. Beide interpretaties kunnen namelijk goed zijn ;)

Intentionally left blank


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

crisp schreef op donderdag 27 januari 2005 @ 15:45:
ergo:

PHP:
1
$content = "<?php include($_SERVER['DOCUMENT_ROOT'] . '/nabestelservice/includes/index.php'); ?>";

PHP:
1
2
3
<?php
$content = "<?php include($_SERVER['DOCUMENT_ROOT'] . '/nabestelservice/includes/index.php'); ?>";
?>


als je niet expliciet zelf de PHP open en sluittags opneemt weet de parser niet in welke context hij de code moet interpreteren. Beide interpretaties kunnen namelijk goed zijn ;)
natuurlijk ja, je kan immers ook in een html file de tekst $content="blaat" willen hebben waarbij de "blaat" door een stukje PHP wordt neergezet, niet aan gedacht :)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Topicstarter
Erkens schreef op donderdag 27 januari 2005 @ 15:49:
natuurlijk ja, je kan immers ook in een html file de tekst $content="blaat" willen hebben waarbij de "blaat" door een stukje PHP wordt neergezet, niet aan gedacht :)
Mjah, inderdaad, dat was me ook even ontglipt. Naja, dan moet iedereen maar braaf zelf de PHP-tags openen. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:38

crisp

Devver

Pixelated

Jep. De parser beredeneert als volgt:
- als er geen PHP open en sluittag voorkomt in de code wordt de hele code als PHP gezien
- als er wel een open en sluittag voorkomt dan wordt pas vanaf de eerste opentag de code als PHP gezien

Intentionally left blank


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:38

crisp

Devver

Pixelated

geen bug dus :)

Intentionally left blank

Pagina: 1

Dit topic is gesloten.