
flounder
Members-
Posts
22 -
Joined
-
Last visited
Profile Information
-
Gender
Male
-
Location
Surrey BC Canada
flounder's Achievements

Newbie (1/5)
0
Reputation
-
Hi Jacques1, thanks for your help. The strange hex sequences were written to my output file after processing my curl input with simple_html_dom. Replacing $html = new simple_html_dom(); $html->load($result); with $html = new simple_html_dom(); header('Content-Type: text/html; charset=utf-8'); $html->load(utf8_encode($result)); solved my problem. All options now have the right text. Thank you VERY much!
-
Thanks for your response. The pages I scrape don't have a DTD or a declared character encoding. FireFox displays the pages OK in Quirks mode. My Code Editor identifies the encoding as windows-1252. So I created a page with a few of the problem characters in it: è, ö, ü and ý, saving it in windows-1252 encoding, attached. This works on my terminal: iconv -f WINDOWS-1252 -t UTF-8 input.html outputting è ü ý ö to my screen, but server-side: $file = fopen("input.html","r"); while(! feof($file)) {echo fgets($file);} $file = file('input.html'); foreach ($file as $line_num => $line) {echo $line;} echo file_get_contents('input.html'); All return � � � � As far as I can tell, all PHP file operations retrieve the contents of the file in ASCII, therefore $utf8 = iconv('windows-1252', 'utf-8', $input); fails. I don't think it can be done programatically server-side. Can anyone confirm this? input.html
-
Hello all, With permission, I scraped a website using curl and simple_html_dom to retrieve 6342 links from 112 pages. While scraping, I converted the links to options for a select element. Most of the options display properly. Here's the problem: there are some ISO 8859-1 hexadecimal encoded characters in the HTML source files, which display as string literals inside options. $input = "<option>Cr\E8me</option>" $input = str_replace("\E8", "è", $input) does not work. How do I turn "<option>Cr\E8me</option>" into "<option>Crème</option>" Any suggestions? TIA.
-
scope of variables inside a user-defined function
flounder replied to flounder's topic in PHP Coding Help
So it took me a couple of days to figure this out (I'm old and I'm slow). This is what I was looking for: The function function FindNumber($arr, $find) { foreach ($arr as $key => $value) { foreach ($value as $num => $val) { if ($value["num"] == $find) { $result = $value; return $result;}}}} The call passing the parameters: foreach ($lines as $donor => $numbers) { $exploded = explode(",", $numbers); $name = FindNumber($array, $exploded[1]); foreach ($name as $num => $val) { echo $val;}} Works like a charm! -
scope of variables inside a user-defined function
flounder replied to flounder's topic in PHP Coding Help
Maybe I'm getting too old for this, I did not receive your response.... -
scope of variables inside a user-defined function
flounder replied to flounder's topic in PHP Coding Help
xyph, I sent you a PM, it's not showing up in my Sent Items, did you get it? -
scope of variables inside a user-defined function
flounder replied to flounder's topic in PHP Coding Help
Yo xyph, thank you very much for taking the time to post what you did. As I stated earlier, I'm quite new to php. However, I've been programming since 1985 starting with a Radio Shack TRS80 with a cassette deck for a storage device. As far as I can tell, my problem currently is the array pointer; I have no idea how to relate your post with my situation, Thanks again, Chris -
scope of variables inside a user-defined function
flounder replied to flounder's topic in PHP Coding Help
Thanks xyph, I deleted the redundant $'s from the array_mutisort statement as $membernumber is indeed unique, but again every time the last record is returned, not the one where $exploded[1] = $membernumber[$key]. -
scope of variables inside a user-defined function
flounder replied to flounder's topic in PHP Coding Help
Hi Nightslyr, that was a helpful hint: I changed my function to: function FindNumber($arr, $find) { foreach ($arr as $key => $row) { if (strncasecmp($find, $membernumber[$key], strlen($find)) == 0) { return ($lastname[$key]}}} The call to the function: foreach ($lines as $donor => $numbers) { $exploded = explode(",", $numbers); FindNumber($array, $exploded[1]); echo $lastname[$key];} Now in each case the very last record gets returned though. I thought the return statement would halt execution of the function and return the current record... -
scope of variables inside a user-defined function
flounder replied to flounder's topic in PHP Coding Help
So what am I missing here? I changed the function to: function FindNumber($arr, $find) { foreach ($arr as $key => $row) { if (strncasecmp($find, $membernumber[$key], strlen($find)) == 0) Pass it the arguments: FindNumber($array, $exploded[1]); Stll nothing gets returned.... -
scope of variables inside a user-defined function
flounder replied to flounder's topic in PHP Coding Help
Hi mikesta707 thanks for the quick response. I'm quite new to php so I'm sorry I have to ask: How do I do that? -
Hello all, I have a 14 column csv that I load into an array, retrieving only the required fields, load the array into columns and perform a sort: foreach ($array as $key => $row) { $firstname[$key] = $row["firstn"]; $lastname[$key] = $row["lastn"]; $address1[$key] = $row["addr1"]; $address2[$key] = $row["addr2"]; $address3[$key] = $row["addr3"]; $city[$key] = $row["cit"]; $stateprov[$key] = $row["state"]; $country[$key] = $row["cntry"]; $membernumber[$key] = $row["num"];} array_multisort($membernumber,$lastname,$firstname,$address1,$address2,$address3,$city,$stateprov,$country,$array); When I pass say the first three letters of a last name ($find = "smi"), all records matching the search criteria are returned: foreach ($array as $key => $row) { if (strncasecmp($find, $lastname[$key], strlen($find)) == 0) { echo "<tr><td>" . $firstname[$key] . "</td>"; echo "<td>" . $lastname[$key] . "</td>"; echo "<td>" . $address1[$key] . "</td>"; echo "<td>" . $address2[$key] . "</td>"; echo "<td>" . $address3[$key] . "</td>"; echo "<td>" . $city[$key] . "</td>"; echo "<td>" . $stateprov[$key] . "</td>"; echo "<td>" . $country[$key] . "</td>"; echo "<td>" . $membernumber[$key] . "</td></tr>" . chr(13); }}} So far so good. However, I'd like to put the search part into a function so I can call it a number of times without having to reload the entire csv: function FindMember() { foreach ($array as $key => $row) { if (strncasecmp($find, $membernumber[$key], strlen($find)) == 0) { echo "<tr><td>" . $firstname[$key] . "</td>"; echo "<td>" . $lastname[$key] . "</td>"; echo "<td>" . $address1[$key] . "</td>"; echo "<td>" . $address2[$key] . "</td>"; echo "<td>" . $address3[$key] . "</td>"; echo "<td>" . $city[$key] . "</td>"; echo "<td>" . $stateprov[$key] . "</td>"; echo "<td>" . $country[$key] . "</td>"; echo "<td align='right'>" . $membernumber[$key] . "</td></tr>" . chr(13); }}}} The search criteria would come from a second txt file with every line containing 2 numbers, separated by a comma: foreach ($lines as $member => $numbers) { $exploded = explode(",", $numbers); $find = $exploded[1]; FindMember(); here $exploded[1] corresponds to $membernumber[$key], so this is where I would call the function, but this is where I run into trouble, nothing gets returned. Does this have something to do with the scope of variables inside a user-defined function? I'd appreciate it if someone could point me in the right direction. TIA
-
Hi Crayon Violet, that's awesome, thank you, thank you, thank you!
-
Hi Crayon Violet, thanks for the follow up. I already ran into that problem. For example, I tried to retrieve all records matching M*** to Mib*** using array("m","a-i","a-b"); It returned only one record although there were 58 records that should have matched. Scenario 1 is what I'd like it to do....
-
got it! Again, thanks for all your help.