What is wrong in this code?

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

    What is wrong in this code?

    <?php
    $string = "Copia (3) di Copia (99) di unita";
    $val = "Copia (99) di unita";
    if (eregi("Copia \(+[0-9]+\) di ".$val,$string) )
    {
    $vara = explode("Copia (",$string);
    $vara = explode(")",$va ra[1]);
    var_dump($vara) ;
    $maxim = $vara[0];
    }
    else $maxim = 0;
    ?>

    I always get $maxim = 0, so eregi is evaluated as false even if is
    "Copia (number) di " in string. It works this way:

    <?php
    $string = "Copia (3) di unita";
    $val = "Copia (3) di unita";
    if (eregi("Copia \(+[0-9]+\) di ".$val,$string) )
    {
    $vara = explode("Copia (",$string);
    $vara = explode(")",$va ra[1]);
    var_dump($vara) ;
    $maxim = $vara[0];
    }
    else $maxim = 0;
    ?>

  • Kimmo Laine

    #2
    Re: What is wrong in this code?

    "iulian.ile a" <iulian.ilea@gm ail.comwrote in message
    news:1161253158 .193150.10120@h 48g2000cwc.goog legroups.com...
    <?php
    $string = "Copia (3) di Copia (99) di unita";
    $val = "Copia (99) di unita";
    if (eregi("Copia \(+[0-9]+\) di ".$val,$string) )
    The pattern here is
    "Copia \(+[0-9]+\) di Copia (99) di unita"
    the problem is the unescaped parenthesis. simple parenthesis have a special
    meaning in regular expressions, they indicate a subpattern. It should be
    "Copia \([0-9]+\) di Copia \(99\) di unita", ie. $val should be "Copia
    \(99\) di unita".
    $vara = explode("Copia (",$string);
    $vara = explode(")",$va ra[1]);
    var_dump($vara) ;
    $maxim = $vara[0];
    This could be done easier using the subpatterns you've accidently
    discovered. Like:

    if(preg_match(" #Copia \(([0-9]+)\) di Copia \(99\) di unita#", $string,
    $matches))
    $maxim = $matches[1];


    --
    "Ohjelmoija on organismi joka muuttaa kofeiinia koodiksi" - lpk
    http://outolempi.net/ahdistus/ - Satunnaisesti päivittyvä nettisarjis
    spam@outolempi. net | rot13(xvzzb@bhg byrzcv.arg)


    Comment

    • iulian.ilea

      #3
      Re: What is wrong in this code?


      Kimmo Laine wrote:
      "iulian.ile a" <iulian.ilea@gm ail.comwrote in message
      news:1161253158 .193150.10120@h 48g2000cwc.goog legroups.com...
      <?php
      $string = "Copia (3) di Copia (99) di unita";
      $val = "Copia (99) di unita";
      if (eregi("Copia \(+[0-9]+\) di ".$val,$string) )
      >
      The pattern here is
      "Copia \(+[0-9]+\) di Copia (99) di unita"
      the problem is the unescaped parenthesis. simple parenthesis have a special
      meaning in regular expressions, they indicate a subpattern. It should be
      "Copia \([0-9]+\) di Copia \(99\) di unita", ie. $val should be "Copia
      \(99\) di unita".
      >
      $vara = explode("Copia (",$string);
      $vara = explode(")",$va ra[1]);
      var_dump($vara) ;
      $maxim = $vara[0];
      >
      This could be done easier using the subpatterns you've accidently
      discovered. Like:
      >
      if(preg_match(" #Copia \(([0-9]+)\) di Copia \(99\) di unita#", $string,
      $matches))
      $maxim = $matches[1];
      >
      >
      --
      "Ohjelmoija on organismi joka muuttaa kofeiinia koodiksi" - lpk
      http://outolempi.net/ahdistus/ - Satunnaisesti päivittyvä nettisarjis
      spam@outolempi. net | rot13(xvzzb@bhg byrzcv.arg)
      Yes, that was the problem. I read your message yesterday but I forgot
      to post. Thanks!

      Comment

      Working...