[php] quotes escapen met een functie

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

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Ik heb daarnet een functie geschreven voor het omzetten van quotes in een code,
' in & #39; en
" in & quot;
(maar dan zonder spatie na de &)

Nou doet er zich alleen iets raars voor bij mij, waarvan ik me afvroeg of dat een bug is, of omdat mijn logica gewoon niet klopt

De code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function quote_safe($str) {
    $str = str_replace("\\'", "'", $str);
    $str = str_replace("'", "'", $str);
    $str = str_replace("\\\"", "\"", $str);
    return str_replace("\"", """, $str);
}

echo "is 't een bug?<br>\n";
echo "is \'t een bug?<br>\n";
echo "is 't een bug?<br>\n";
echo "is \'t een bug?<br>\n";

echo quote_safe("is 't een bug?<br>\n");
echo quote_safe("is \'t een bug?<br>\n");
echo quote_safe("is 't een bug?<br>\n");
echo quote_safe("is \'t een bug?<br>\n");


Wat dit als resultaat heeft:
PHP:
1
2
3
4
5
6
7
8
9
// dit is geen php code, maar anders worden die codes in single quotes weergegeven
is 't een bug?
is \'t een bug?
is 't een bug?
is \'t een bug?
is 't een bug?
is 't een bug?
is 't een bug?
is \'t een bug?


zoals je ziet staat er in regel 14 van de (echte) code een \ voor de ' -> die regel correspondeert met regel 7 van de output en daar is ie ineens verdwenen. Het lijkt dus wel of ie die single quote escaped op het moment dat ie 'm aan de safe_quot() functie doorgeeft. maar dat hoort toch niet te gebeuren?

Verwijderd

Het doet exact wat de code zegt dat het moet doen.

\' wordt ' (regel 2)
' wordt &#39; (regel 3)

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Verwijderd schreef op 17 August 2003 @ 00:07:
Het doet exact wat de code zegt dat het moet doen.

\' wordt ' (regel 2)
' wordt &#39; (regel 3)
ehhh...maar dat snap ik niet

uit het code gedeelte zijn regel 9 en 14 exact hetzelfde, op het verschil na dat 14 door de safe_quot() functie gehaald wordt
Ik verwacht dat ik op m'n scherm alleen hetzelfde zie. (hoewel in de broncode natuurlijk bij 9 de ' ook echt een ' is en bij 14 de ' en & #39;)
Bij regel 9 (3 in de output) is dat \'
maar bij regel 14 (7 in de output) is die \ verdwenen.
En ik snap niet waarom php dat doet

[ Voor 8% gewijzigd door marty op 17-08-2003 00:16 ]


Verwijderd

omdat je zegt dat hij dat moet doen, regel 2

\' moet weg, en daarvoor moet ' terugkomen
dáárom is die \ in de output dus weg

[ Voor 6% gewijzigd door Verwijderd op 17-08-2003 00:17 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Dit valt onder basiccursusje debuggen hoor, doe maar eens een echo na iedere regel van die quote_safe functie en je ziet het vanzelf foutlopen... :z

Professionele website nodig?


Dit topic is gesloten.