Undefined offset notice with explode

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

    Undefined offset notice with explode

    Hi there,

    I'm having a problem with PHP which I'm not sure how to best solve.
    Here is the code:

    $fp = fopen("comments .txt", "r");
    while(!feof($fp ))
    {
    $line = fgets($fp, 1024);
    list($key, $value) = explode(":", $line, 2);

    if ($key == "something" )
    {
    ...etc...etc...

    The problem here is that if the line doesn't contain a : then there
    isn't anything to populate $key and $value and so PHP reports "PHP
    Notice: Undefined offset: 1". When I used to work with Perl, it
    wouldn't report and rely on me handling the issue later if needs be.

    What is the best way to get the explode line to not report a PHP notice
    when it comes across a $line that isn't in the correct format?

    Many thanks,

    Richard.

  • Jerry Stuckle

    #2
    Re: Undefined offset notice with explode

    Richard Lawrence wrote:[color=blue]
    > Hi there,
    >
    > I'm having a problem with PHP which I'm not sure how to best solve.
    > Here is the code:
    >
    > $fp = fopen("comments .txt", "r");
    > while(!feof($fp ))
    > {
    > $line = fgets($fp, 1024);
    > list($key, $value) = explode(":", $line, 2);
    >
    > if ($key == "something" )
    > {
    > ...etc...etc...
    >
    > The problem here is that if the line doesn't contain a : then there
    > isn't anything to populate $key and $value and so PHP reports "PHP
    > Notice: Undefined offset: 1". When I used to work with Perl, it
    > wouldn't report and rely on me handling the issue later if needs be.
    >
    > What is the best way to get the explode line to not report a PHP notice
    > when it comes across a $line that isn't in the correct format?
    >
    > Many thanks,
    >
    > Richard.
    >[/color]

    if (strpos($line, ':') !== false)
    list($key, $value) = explode(":", $line, 2);
    else
    whatever...

    --
    =============== ===
    Remove the "x" from my email address
    Jerry Stuckle
    JDS Computer Training Corp.
    jstucklex@attgl obal.net
    =============== ===

    Comment

    • Chung Leong

      #3
      Re: Undefined offset notice with explode

      @list($key, $value) = ....

      Comment

      • Alvaro G Vicario

        #4
        Re: Undefined offset notice with explode

        *** Richard Lawrence wrote/escribió (31 May 2005 01:55:16 -0700):[color=blue]
        > list($key, $value) = explode(":", $line, 2);[/color]

        Not as elegant as list but...


        $pair=explode(" :", $line, 2);

        if(count($pair) ==2){
        echo $pair[0];
        echo $pair[1];
        }



        --
        -- Álvaro G. Vicario - Burgos, Spain
        -- http://bits.demogracia.com - Mi sitio sobre programación web
        -- Don't e-mail me your questions, post them to the group
        --

        Comment

        • Ken Robinson

          #5
          Re: Undefined offset notice with explode



          Jerry Stuckle wrote:[color=blue]
          > Richard Lawrence wrote:[color=green]
          > > Hi there,
          > >
          > > I'm having a problem with PHP which I'm not sure how to best solve.
          > > Here is the code:
          > >
          > > $fp = fopen("comments .txt", "r");
          > > while(!feof($fp ))
          > > {
          > > $line = fgets($fp, 1024);
          > > list($key, $value) = explode(":", $line, 2);
          > >
          > > if ($key == "something" )
          > > {
          > > ...etc...etc...
          > >
          > > The problem here is that if the line doesn't contain a : then there
          > > isn't anything to populate $key and $value and so PHP reports "PHP
          > > Notice: Undefined offset: 1". When I used to work with Perl, it
          > > wouldn't report and rely on me handling the issue later if needs be.
          > >
          > > What is the best way to get the explode line to not report a PHP notice
          > > when it comes across a $line that isn't in the correct format?
          > >
          > > Many thanks,
          > >
          > > Richard.
          > >[/color]
          >
          > if (strpos($line, ':') !== false)
          > list($key, $value) = explode(":", $line, 2);
          > else
          > whatever...[/color]


          if (strpos(trim($l ine),':') === false) $line = trim($line) . ':'; //
          add a colon to the line if one isn't there after trimming off the
          trailing CR/LF

          Ken

          Comment

          Working...