Re: Backslash confusion

"Erwin Moller"
<Since_humans_read_this_I_am_spammed_too_much [at] spamyourself.com> wrote in
message news:4805abe9$0$14343$e4fe514c [at] news.xs4all.nl...
> freelance71 schreef:
>> I have to pass the string '\abcd' to a function. Ofcourse one (or two)
>> extra '\' is needed to escape but experimenting with it shows that I have
>> to pass three extra backslashes to make it work.
>>
>> <script>
>> var q = "\\\\abcd";
>> displayLatex(q);
>> </script>
>>
>>
>> /* this function is in another file */
>>
>> function displayLatex(q) {
>>
>>
>> alert(q); /* this shows \abcd when called by above script*/
>>
>> }
>>
>>
>> Can anyone explain why this is so? why 4 backslashes?
>
> I do not understand.
> Your script alerts \\abcd over here (on FF), as expected.
> There must be more to it than you describe.
>
> Regards,
> Erwin Moller


can it be because I'm using it in a PHP file like this?

<?php

echo <<< HTMLOUT

<script>

var q = '\\\\abcd';

displayLatex(q);

</script>

HTMLOUT;

?>
freelance71 [ Mi, 16 April 2008 09:43 ] [ ID #1943858 ]

Re: Backslash confusion

freelance71 schreef:
> "Erwin Moller"
> <Since_humans_read_this_I_am_spammed_too_much [at] spamyourself.com> wrote in
> message news:4805abe9$0$14343$e4fe514c [at] news.xs4all.nl...
>> freelance71 schreef:
>>> I have to pass the string '\abcd' to a function. Ofcourse one (or two)
>>> extra '\' is needed to escape but experimenting with it shows that I have
>>> to pass three extra backslashes to make it work.
>>>
>>> <script>
>>> var q = "\\\\abcd";
>>> displayLatex(q);
>>> </script>
>>>
>>>
>>> /* this function is in another file */
>>>
>>> function displayLatex(q) {
>>>
>>>
>>> alert(q); /* this shows \abcd when called by above script*/
>>>
>>> }
>>>
>>>
>>> Can anyone explain why this is so? why 4 backslashes?
>> I do not understand.
>> Your script alerts \\abcd over here (on FF), as expected.
>> There must be more to it than you describe.
>>
>> Regards,
>> Erwin Moller
>
>
> can it be because I'm using it in a PHP file like this?

Yes. That is the reason.

>
> <?php
>
> echo <<< HTMLOUT
>
> <script>
>
> var q = '\\\\abcd';

that becomes:
var q = '\\abcd';

in your HTML.
Simply check your source in your browser to see it.

Regards,
Erwin Moller

>
> displayLatex(q);
>
> </script>
>
> HTMLOUT;
>
> ?>
>
>
Erwin Moller [ Mi, 16 April 2008 10:27 ] [ ID #1943859 ]

Re: Backslash confusion

freelance71 wrote:
>> freelance71 schreef:
>>> I have to pass the string '\abcd' to a function. Ofcourse one (or two)
>>> extra '\' is needed to escape but experimenting with it shows that I have
>>> to pass three extra backslashes to make it work.
> [...]
> can it be because I'm using it in a PHP file like this?
>
> <?php
>
> echo <<< HTMLOUT
>
> <script>
>
> var q = '\\\\abcd';
>
> displayLatex(q);
>
> </script>
>
> HTMLOUT;
>
> ?>

Yes, you have to escape each backslash for use with `echo'. A simple test
(with php -a) shows that

<?php

echo <<<HTML

var q = '\\a';

HTML;

?>

displays only one backslash.

The simple and most efficient solution is to take heed of this general
advice: Do not let the PHP parser do things it does not have to.

<?php
...
?>
var q = '\\a';
<?php
...
?>

(The first and last part are optional, of course.)


F'up2 cl.php

PointedEars
--
realism: HTML 4.01 Strict
evangelism: XHTML 1.0 Strict
madness: XHTML 1.1 as application/xhtml+xml
-- Bjoern Hoehrmann
PointedEars [ Mi, 16 April 2008 11:37 ] [ ID #1943866 ]
PHP » comp.lang.php » Re: Backslash confusion

Vorheriges Thema: problem with com and php
Nächstes Thema: sprintf for SQL injection testing