Thanks. It actually turned out that I wanted to do just:

$HTTP_POST_VARS[\\1]

in the regex (ie: removing the quotes entirely inside the array)

and it works just fine. Thanks for the info however.


On Friday 16 November 2001 09:37, George Whiffen wrote:
> Henrik,
>
> I think your problem is jsimply that you are not getting variable
> substitution of $HTTP_GET_VARS["whatever"] inside double quotes.
>
> print "whatever is $HTTP_GET_VARS["whatever"]";
>
> is not safe.
>
> You need
>
> print "whatever is {$HTTP_GET_VARS["whatever"]}";
>
> or, (IMHO better),
>
> print 'whatever is '.$HTTP_GET_VARS["whatever"];
>
> The fact that you are actually evaluating an assignment is I think
> irrelevant, it's just the variable substitution that's failing. See the
> variable parsing section of
> http://www.php.net/manual/en/language.types.string.php
>
>
> George
>
> Henrik Hudson wrote:
> > Hey List-
> >
> > Working on a program and I seem to have run into a problem with
> > HTTP_POST_VARS. Are the HTTP_VARS considered "special"?
> >
> > Here is what I am doing, reading in from a file into an array and then
> > grabbing each line and looking for  ]string[  and replacing that with
> > $HTTP_POST_VARS["string"]
> >
> > The first echo prints out the lines correctly, but the echo after the
> > eval prints out the same lines. My error log shows this:
> >
> > PHP Parse error:  parse error, expecting `T_STRING' or `T_VARIABLE' or
> > `T_NUM_STRING' in
> > /data/www/webpages/test.rhavenn.net/public_html/formmail/formmail.php(164
> >) : eval()'d code on line 1
> >
> > So, its having problems doing an eval on the HTTP_POST? If I replace the
> > HTTP_POST stuff with just    $\\1  and then define $string =
> > $HTTP_POST_VARS["string"] it works just fine, but I can't do this since I
> > don't know what string is going to be, just that it is between ] [  chars
> > and there can be multiple ] [  on one line.
> >
> > Any thoughts? Code is below.
> >
> > //Read the array
> > $form_data = "";
> > for($i=0; $i < count($filearr); $i++){
> >         $line = $filearr[$i];
> >         //Strip the ] [ from around the variables so they will be
> > interpreted $line = eregi_replace("\]([^\[]+)\[",
> > "\$HTTP_POST_VARS['\\1']", $line);
> >         echo "Line: $line<BR>";
> >         //eval the variables from $line into themselves and they become
> > literal
> >         eval ("\$line = \"$line\";");
> >         echo "Lineafterwards: $line<BR>\n";
> >         //Write the line back into a single variable
> >         $form_data = $form_data . $line;
> > }
> > exit;
> >
> > Thanks!
> >
> > Henrik
> > --
> >
> > Henrik Hudson
> > [EMAIL PROTECTED]

-- 

Henrik Hudson
[EMAIL PROTECTED]

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to