sungo Posted April 17, 2009 Share Posted April 17, 2009 Hey guys, I'm new to PHP and am trying to teach myself out of books / off tutorial websites, and I've run into a problem with something I am trying to make. I'm basically trying to make a translation widget that you can enter data into and it will feed that data through a web-based translator (on a different site), parse the data, and feed it back to you. I made a form, that passes the information to the server via cURL and parses the data via regex(/preg_match_all). Sometimes, when you search, there are too many words and you get a "More results" button. I can also grab this data from the server but I cannot seem to make the script parse the web data you get from hitting the button. It merely just loads the host servers website and doesn't re-parse the data. If I added more preg_match_all/regex things, I could strip away the things I want but then it would have to be infinitely deep code for however many pages deep the "More results" goes with the code in the current form. I figure there's a way around this? I'm sure you can do something with a function, to make this work correctly but I'm new so I'm failing hard. I've tried a million different things. If anyone can give me some tips, it'd be much appreciated. I could use the instruction. Thanks! You can check out a the form here My apologizes ahead of time for ugly scripting, but here it is thusfar : <?php // Site is in Japanese EUC encoding, so need a meta content-type echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-JP\" />"; // Establish a form for the possible "More Results" later echo "<FORM NAME=\"inp\" ID=\"inp\" ACTION=\"process2.php\" METHOD=\"POST\" >"; // Parsing POST data variables from the form $dsrchkey = $_POST["dsrchkey"]; $dicsel = $_POST["dicsel"]; $dsrchtype = $_POST["dsrchtype"]; $engpri = $_POST["engpri"]; $exactm = $_POST["exactm"]; $firstkanj = $_POST["firstkanj"]; // Perparing POST variables for cURL if ($dsrchtype=="J") { $dsrchtype_on="&dsrchtype=$dsrchtype"; } else { $dsrchtype_on=""; } if ($engpri=="X") { $engpri_on="&engpri=$engpri"; } else { $engpri_on=""; } if ($exactm=="X") { $exactm_on="&exactm=$exactm"; } else { $exactm_on=""; } if ($firstkanj=="X") { $firstkanj_on="&firstkanj=$firstkanj"; } else { $firstkanj=""; } // cURL for grabbing the data $post_data = "dsrchkey=$dsrchkey&dicsel=$dicsel".$dsrchtype_on.$engpri_on.$exactm_on.$firstkanj; $post = $post_data $url = "http://www.csse.monash.edu.au/~jwb/cgi-bin/wwwjdic.cgi?1E"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $page = curl_exec($ch); // if you click the "More Results" button below, cURL the data from a new url if (isset($_POST['Action'])) { $actionparam = $_POST['actionparam']; $post_data = "actionparam=".$actionparam; $url = "http://www.csse.monash.edu.au/~jwb/cgi-bin/wwwjdic.cgi?1F"; $post = $post_data; $ch = curl_init($url); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); echo curl_exec($ch); } else { } // Regex to grab appropriate data preg_match_all('/<p>(.+?)<input type="hidden" name="actionparam" value="/s', $page, $match1); // Grabs the variable used to point to "More Results" preg_match_all('/<input type="hidden" name="actionparam" value="(.+?)">/s', $page, $match2); // Checks to see if there are "More results" preg_match_all('/<INPUT TYPE="submit" NAME="Action" VALUE="More(.+?)">/s', $page, $match3); $match_no = $match2[1][0]; $more_match = $match3[1][0]; // Echos Regex'd data echo $match1[1][0]; // If more results exist, make a button to go to the more results! if ( $more_match == "" ) { } else { echo "<input type=\"hidden\" name=\"actionparam\" value=\"".$match_no."\">"; echo "<INPUT TYPE=\"submit\" NAME=\"Action\" VALUE=\"More results\">"; } echo "</form>"; ?> Ideally I'd like to make the script self-contained, meaning it all runs from one php, or two, but I really have limited experience with how to integrate like that. Thanks again!! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.