Oops. Sorry.

<?php
// This function takes the servers QueryString and converts it to an array.
// It will deal with repeated names.
// An array is returned.
// NOTE: This function is specifically ignoring keys - if you have
supplied keys, then
//       you would not normally require this function.
function queryStringToArray()
        {
        // Default result is empty array.
        $a_Result = array();

        // Do we have anything to convert?
        if ('' != $_SERVER['QUERY_STRING'])
                {
                // Split the query string on a real &.
                $a_Parts = preg_split('`&(?!amp;)`sim', 
$_SERVER['QUERY_STRING']);

                // Process each part into the result array.
                foreach($a_Parts as $s_Part)
                        {
                        $i_EqualPos = strpos($s_Part, '=');
                        // If no = or = is at the end of Part, then Part is 
Name and Value
is empty string.
                        if ((0 == $i_EqualPos) || (strlen($s_Part) == 1 + 
$i_EqualPos))
                                {
                                // Remove any trailing =
                                $s_Name = rtrim($s_Part, '=');
                                $s_Value = '';
                                }
                        else
                                {
                                // Split on the first =
                                $s_Name = substr($s_Part, 0, $i_EqualPos);
                                $s_Value = substr($s_Part, 1 + $i_EqualPos);
                                }

                        // Does Name exist and is it not an array
                        if (array_key_exists($s_Name, $a_Result))
                                {
                                if (!is_array($a_Result[$s_Name]))
                                        {
                                        // Make the stored value an array.
                                        $a_Result[$s_Name] = 
array($a_Result[$s_Name]);
                                        }
                                // Add the value to the name array
                                $a_Result[$s_Name][] = $s_Value;
                                }
                        else
                                {
                                // Add the name/value to the results array.
                                $a_Result[$s_Name] = $s_Value;
                                }
                        }
                }

        return $a_Result;
        }
?>

On 16/11/2007, Richard Quadling <[EMAIL PROTECTED]> wrote:
> On 15/11/2007, Matt Foster <[EMAIL PROTECTED]> wrote:
> >
> > Why are you making XHRs w/ the proprietary activeX syntax?  There is
> > your first problem, adopt Ajax.Request for any and all XHRs and half
> > your problems will be solved.
> >
> > Also be careful when sending an array of data.  When you have
> > identically named pairs you can lose data.  You've got to use the
> > square bracket notation on your names, check out this demo i set up.
> > The responder justs print_r() the $_POST array..
> >
> > http://positionabsolute.net/projects/javascript/name-pair-test.html
> >
> >
> > Lose data
> > var str = "name=matt&name=william&name=tobie&name=sam";
> >
> > preserve data
> > var str = "name[]=matt&name[]=william&name[]=tobie&name[]=sam";
>
> There is a potential workaround.
>
> Try this as your php script ...
>
> <?php phpinfo(); ?>
>
> Now run that like this ...
>
> http://www.your-site.com/phpinfo.php?test=1&test=2
>
> If you look through the config of your server, looking for test, you
> will see that ...
>
> $_SERVER['QUERY_STRING'] = 'test=1&test=2'
> $_SERVER['REQUEST_URI'] = '/phpinfo.php?test=1&test=2'
>
> But, as correctly mentioned by Matt, both $_GET and $_REQUEST (and
> $_POST if that was the submission method) will lose the data.
>
> I don't have a script to convert QUERY_STRING into an array that is
> 100% perfect (I've just realised that you can have multiple levels of
> keys to support which makes it a little more awkward.
>
> But, assuming the reason that you are using QUERY_STRING is because
> you have not supplied keys (or used [] at all), then the following
> script will help ...
>
> <?php
> // This function takes the servers QueryString and converts it to an array.
> // It will deal with repeated names.
> // An array is returned.
> // NOTE: This function is specifically ignoring keys - if you have
> supplied keys, then
> //       you would not normally require this function.
> function queryStringToArray()
>         {
>         // Default result is empty array.
>         $a_Result = array();
>
>         // Do we have anything to convert?
>         if ('' != $_SERVER['QUERY_STRING'])
>                 {
>                 // Split the query string on a real &.
>                 $a_Parts = preg_split('`&(?!amp;)`sim', 
> $_SERVER['QUERY_STRING']);
>
>                 // Process each part into the result array.
>                 foreach($a_Parts as $s_Part)
>                         {
>                         $i_EqualPos = strpos($s_Part, '=');
>                         // If no = or = is at the end of Part, then Part is 
> Name and Value
> is empty string.
>                         if ((0 == $i_EqualPos) || (strlen($s_Part) == 1 + 
> $i_EqualPos))
>                                 {
>                                 // Remove any trailing =
>                                 $s_Name = rtrim($s_Part, '=');
>                                 $s_Value = '';
>                                 }
>                         else
>                                 {
>                                 // Split on the first =
>                                 $s_Name = substr($s_Part, 0, $i_EqualPos);
>                                 $s_Value = substr($s_Part, 1 + $i_EqualPos);
>                                 }
>
>                         // Does Name exist?
>                         if (array_key_exists($s_Name, $a_Result))
>                                 {
>                                 // Make the stored value an array and add the 
> new value.
>                                 $a_Result[$s_Name] = 
> array($a_Result[$s_Name], $s_Value);
>                                 }
>                         else
>                                 {
>                                 // Add the name/value to the results array.
>                                 $a_Result[$s_Name] = $s_Value;
>                                 }
>                         }
>                 }
>
>         return $a_Result;
>         }
> ?>
>
> Usage would be ...
>
> <?php
> $a_Data = queryStringToArray();
> ?>
>
> As an example, test.php?test=1&test=2&test=3
>
> results in an array of ...
>
> array ( 'test' => array ( 0 => array ( 0 => '1', 1 => '2', ), 1 => '3', ), )
>
> Richard.
>
> > On Nov 14, 4:21 pm, TheWis <[EMAIL PROTECTED]> wrote:
> > > Hi Guys, I am writing this code to pull URLs form txt file and pass
> > > them to an array .. (this part is working well)  but the second part
> > > which is sending each array element to external PHP file to get some
> > > results is not working for me.
> > >
> > > The Text3.txt file is looking like this:
> > >
> > > http://site.info/http://site1.info/http://site.com/
> > >
> > > You can assume the blogs.php file will look like this :
> > >
> > > <?
> > >    $keyword=$_REQUEST['keyword'];
> > >         echo $keyword;
> > > ?>
> > >
> > > Anybody can help me in that ? your help will be appreciated guys ..
> > > here is my code
> > >
> > > <html>
> > > <head>
> > > <meta http-equiv="Content-Type" content="text/html;
> > > charset=windows-1252">
> > > <script src="prototype.js"></script>
> > > <title>JS</title>
> > > </head>
> > > <body>
> > > <SCRIPT LANGUAGE = JAVASCRIPT>
> > >       var request = new ActiveXObject('Msxml2.XMLHTTP');
> > >       request.open('get', 'Test3.txt', true);
> > >       request.onreadystatechange = extractURLs;
> > >       request.send();
> > >        // document.write(responseText);
> > >        function extractURLs() {
> > >        // if (request.readyState == 4 && request.status == 200) {
> > >            urlArray = request.responseText.split("\n")
> > >            start_your_function(urlArray);
> > >        // }
> > >        document.write(urlArray.length);
> > >
> > >       }
> > >             document.write(urlArray[5] + "<br />");
> > >       var i=0 ;
> > >       var dd= urlArray.length - 1;
> > >
> > >        document.write(dd);
> > >        document.write(i);
> > > for (i=0;i<=dd;i++)
> > > {
> > >  var keyword=urlArray[i];
> > > // When I add this part it is not working any more
> > >                    var request2 = new ActiveXObject('Msxml2.XMLHTTP');
> > >
> > >      new Ajax.Request('blogs.php?='+keyword, true);
> > >
> > >      Ajax.Responders.register(responder);
> > >
> > >          document.write(i);
> > >
> > >       document.write(keyword + "<br />"); */
> > >
> > >                }
> > >
> > >       </SCRIPT>
> > >
> > > </body>
> > >
> > > </html>
> > > >
> >
>
>
> --
> -----
> Richard Quadling
> Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
> "Standing on the shoulders of some very clever giants!"
>


-- 
-----
Richard Quadling
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
"Standing on the shoulders of some very clever giants!"

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Spinoffs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to