Backslash confusion

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • freelance71

    Backslash confusion

    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?


  • Erwin Moller

    #2
    Re: Backslash confusion

    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

    Comment

    • freelance71

      #3
      Re: Backslash confusion


      "Erwin Moller"
      <Since_humans_r ead_this_I_am_s pammed_too_much @spamyourself.c omwrote in
      message news:4805abe9$0 $14343$e4fe514c @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;

      ?>


      Comment

      • Erwin Moller

        #4
        Re: Backslash confusion

        freelance71 schreef:
        "Erwin Moller"
        <Since_humans_r ead_this_I_am_s pammed_too_much @spamyourself.c omwrote in
        message news:4805abe9$0 $14343$e4fe514c @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;
        >
        ?>
        >
        >

        Comment

        • Thomas 'PointedEars' Lahn

          #5
          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

          Comment

          Working...