1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Connection: close Transfer-Encoding: chunked X-Powered-By: PHP/5.2.0 Content-Type: text/plain; charset=iso-8859-1 Expires: Sat, 28 Jun 2008 08:03:29 GMT Last-Modified: Thu, 01 Jan 1970 00:00:00 GMT Cache-Control: public, max-age=86400 Pragma: !invalid Date: Fri, 27 Jun 2008 08:03:29 GMT Server: lighttpd/1.4.8 4e Country: NETHERLANDS (NL) City: Groningen Latitude: 53.2167 Longitude: 6.56667 0 |
1 2 3 4 | City: ([^\r\n] Latitude: ([-+]?[0-9]*\.?[0-9]+) Longitude: ([-+]?[0-9]*\.?[0-9]+)/ism' |
Ik zou gewoon met split werken als ik jouw was, met is_numeric kan je zien of een getal een float is (en dus heb je geen regexp nodig voor (negatieve) getallen).quote:Op vrijdag 27 juni 2008 10:18 schreef Chandler het volgende:
Hoezo minder foutgevoelig? als je weet wat voor gegevens je zou kunnen vinden, kun je daar de regex toch op instellen? en stel de server van hostip wordt veranderd en ik krijg er een extra header bij, dan zit ik alweer met de sores
Hahahaha, die heb ik al een keertje eerder gepost in deze topicreeks.quote:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | $lines = explode("\n", $buf); $geopIp = array(); foreach ($lines AS $id => $content) { if (substr($content, 0, 8) == "Country:") { $str = substr($content, 9, strlen($content) - 9); $i = strpos($str, "("); if ($i > 0) { $geoIp['country'] = trim(substr($str, 0, $i)); $geoIp['country_code'] = trim(substr($str, $i+1, 2)); } else { $geoIp['country'] = trim($str); } } elseif (substr($content, 0, 5) == "City:") { $str = substr($content, 6, strlen($content) - 6); $i = strpos($str, ","); if ($i > 0) { $geoIp['city'] = trim(substr($str, 0, $i)); $geoIp['state'] = trim(substr($str, $i, strlen($str) - $i)); } else { $geoIp['city'] = trim($str); $geoIp['state'] = ""; } } elseif (substr($content, 0, 9) == "Latitude:") { $geoIp['latitude'] = trim(substr($content, 10, strlen($content) - 10)); } elseif (substr($content, 0, 10) == "Longitude:") { $geoIp['longitude'] = trim(substr($content, 11, strlen($content) - 11)); } } ?> |
1 2 3 4 5 6 7 8 9 | ( [country] => NETHERLANDS [country_code] => NL [city] => Groningen [state] => [latitude] => 53.2167 [longitude] => 6.56667 ) |
Niet in puur HTML, je kunt wel een linkje maken en met JavaScript een onClick event maken die een form submit.quote:Op vrijdag 27 juni 2008 11:10 schreef slacker_nl het volgende:
[..]
Hahahaha, die heb ik al een keertje eerder gepost in deze topicreeks.
Maar ik heb een ubern00b question.
Kan je <a href="http://server/page.php?search=something">klik hier</a> ook dmv van een POST submitten? Dit wordt standaard een GET, nu kan ik wel met mod_rewrite aan de slag, maar volgens mij moet het op een andere manier ook kunnen. Iemand een idee?
Brrrr, dat kan veel mooier Chandler! Ga eens met eigen gemaakte functies werkenquote:Op vrijdag 27 juni 2008 11:13 schreef Chandler het volgende:
Je hebt gelijk slacker_nl maar al zou je een regex per 'onderdeel' doen, dan leek het mij toch sneller, alle kleine beetjes helpen.
Ik heb het trouwens nu zo opgelost
[ code verwijderd ]
uitvoer
[ code verwijderd ]
is cURL geen optie voor je? daarmee kun je namelijk zelf instellen of je wél of géén headers wilt én je kan een timeout opgeven.quote:Op vrijdag 27 juni 2008 09:49 schreef Chandler het volgende:
Het probleem is dat ik het nu uit ga lezen met fsockopen aangezien ik daar gebruik kan maken van een timeout tijd en met file, get_file_content niet...En fsockopen geeft veel meer info terug dan ik eingelijk wil
[ code verwijderd ]
nu wil ik graag via een regexje de inhoud filteren. en aangezien de headers altijd kunnen veranderen leek een regexje mij de perfecte oplossing.
Heb het volgende ook geprobeerd maar wederom zonder succes
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function doRequest($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); // geen header curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $contents = curl_exec($ch); curl_close($ch); return $contents; } var_dump(doRequest('http://api.hostip.info/get_html.php?ip=12.215.42.19&position=true')); // adres bestaat var_dump(doRequest('http://bla')); // geeft false terug <img class="rde_img_smiley" src="http://i.fok.nl/s/smile.gif" width="15" height="15" alt="" /> ?> |
Javascript heb ik nog geen kaas van gegeten, heb je ergens een stukje code liggen waarmee ik kan spelen?quote:Op vrijdag 27 juni 2008 11:15 schreef Dzy het volgende:
[..]
Niet in puur HTML, je kunt wel een linkje maken en met JavaScript een onClick event maken die een form submit.
quote:Op vrijdag 27 juni 2008 11:13 schreef Chandler het volgende:
Je hebt gelijk slacker_nl maar al zou je een regex per 'onderdeel' doen, dan leek het mij toch sneller, alle kleine beetjes helpen.
Ik heb het trouwens nu zo opgelost
[ code verwijderd ]
uitvoer
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $stuff = array("Country: NETHERLANDS (NL)", "City: Groningen", "Latitude: 53.2167", "Longitude: 6.56667"); $result = array(); foreach($stuff as $v) { $arr = split(': ', $v); $k = strtolower(array_shift($arr)); $result[$k] = join(": ", $arr); } if (array_key_exists("country", $result)) { list($result['country'], $result['tla']) = split("\(", $result['country']); $result['country'] = trim($result['country']); $result['tla'] = str_replace(")", "", $result['tla']); } /* Voeg nog is_numeric checks toe voor langitude en longitude */ print_r($result); ?> |
Ik wil die ?search=something niet in m'n adresbalk (het is een cosmetisch ding, verder niet). En mensen die geen javascript hebben aanstaan, die moeten het gewoon aanzetten.quote:Op vrijdag 27 juni 2008 11:24 schreef Tijn het volgende:
Nadeel van zo'n truc is natuurlijk wel dat clients die geen javascript ondersteunen of dat bewust uit hebben staan je website niet meer kunnen gebruiken.
Wat is überhaupt je probleem met GET?
Dan zou je ook eerst de GET-variabelen kunnen processen en daarna de user doorsturen naar een pagina met een cleanere URL.quote:Op vrijdag 27 juni 2008 11:32 schreef slacker_nl het volgende:
[..]
Ik wil die ?search=something niet in m'n adresbalk (het is een cosmetisch ding, verder niet).
Wat als dat niet kan, omdat ze bijvoorbeeld gebruik maken van een text-mode browser via een shell, een mobiele browser die Javascript niet ondersteunt of een Screenreader?quote:En mensen die geen javascript hebben aanstaan, die moeten het gewoon aanzetten.
Mmm, text browsing kan op die site, dus dat mag inderdaad niet breken.. Al kan Elinks wel Javascript aan...quote:Op vrijdag 27 juni 2008 11:39 schreef Tijn het volgende:
[..]
Dan zou je ook eerst de GET-variabelen kunnen processen en daarna de user doorsturen naar een pagina met een cleanere URL.
[..]
Wat als dat niet kan, omdat ze bijvoorbeeld gebruik maken van een text-mode browser via een shell, een mobiele browser die Javascript niet ondersteunt of een Screenreader?
Niks mis met Javascript om dingen te verfraaien hoor. Maar het is altijd jammer als de basisfunctionaliteit van een site verloren gaat als het niet wordt ondersteund.quote:Op vrijdag 27 juni 2008 11:46 schreef slacker_nl het volgende:
[..]
Mmm, text browsing kan op die site, dus dat mag inderdaad niet breken..
Ik zat te hopen dat ik niet teveel hoef aan te passen aangezien mijn HTML kennis echt niet top is. Ik kan een default pagina bouwen, maar zodra er wat meer moet kunnen dan default houdt het echt op.quote:Op vrijdag 27 juni 2008 11:48 schreef GI het volgende:
Herbouw dan gewoon een beetje waardoor je http://site/search/query kan doen. Ziet er gelikt zat uit
Kan idd veel mooier, maar dit is toch goed genoeg? lijkt mijquote:Op vrijdag 27 juni 2008 11:16 schreef Scorpie het volgende:
Brrrr, dat kan veel mooier Chandler! Ga eens met eigen gemaakte functies werken
Ik ben idd nog niet echt heel veel mer cURL bezig geweest maar idd was een handige optie. Maar nu heb ik het reeds met fsockopen, is het een groot voordeel als ik cURL gebruik?quote:Op vrijdag 27 juni 2008 11:16 schreef Tiemie het volgende:
is cURL geen optie voor je? daarmee kun je namelijk zelf instellen of je wél of géén headers wilt én je kan een timeout opgeven.
[ code verwijderd ]
Ziet er ook heel netjes uit maar is dat van mij dan zo langdradig ofzo?quote:Op vrijdag 27 juni 2008 11:30 schreef slacker_nl het volgende:
[ code verwijderd ]
Denk dat met curl je code schoner wordt. Ikzelf zou voor curl kiezen ipv zelf een socket openen en de data fetchen. Al is het een leuke 'for science approach' om het zelf met fsockopen te doen. Maar ik zou het in een productieomgeving niet doen, tenzij er een echt goede reden is om het wel te doen. Je wilt niet te low-level bezig zijn, dus de curl abstractielaag erboven is gewoon prettiger werken.quote:Op vrijdag 27 juni 2008 13:05 schreef Chandler het volgende:
Ik ben idd nog niet echt heel veel mer cURL bezig geweest maar idd was een handige optie. Maar nu heb ik het reeds met fsockopen, is het een groot voordeel als ik cURL gebruik?
Ziet er ook heel netjes uit maar is dat van mij dan zo langdradig ofzo?
Een groot voordeel? Essentieel!quote:Op vrijdag 27 juni 2008 13:05 schreef Chandler het volgende:
Ik ben idd nog niet echt heel veel mer cURL bezig geweest maar idd was een handige optie. Maar nu heb ik het reeds met fsockopen, is het een groot voordeel als ik cURL gebruik?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |