abonnement Unibet Coolblue Bitvavo
pi_59724726
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
HTTP/1.1 200 OK
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


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

1
2
3
4
'/Country: ([^\r\n]
City: ([^\r\n]
Latitude: ([-+]?[0-9]*\.?[0-9]+)
Longitude:  ([-+]?[0-9]*\.?[0-9]+)/ism'
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_59725312
De methode van SuperRembo is inderdaad verreweg het handigst. Eerst splitten op enters, daarna splitten op spaties, en dan ben je eigenlijk al zo goed als klaar. Is ook veel minder foutgevoelig dan zo'n superregexp die je probeert te bouwen.
pi_59725433
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
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  vrijdag 27 juni 2008 @ 10:37:09 #229
187069 slacker_nl
Sicko pur sang
pi_59725904
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
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).

Tis minder foutgevoelig, het feit dat je nu al loopt te kloten met een (simpele) regexp geeft aan dat op het moment dat er een bug in je regexp hebt dat je dagen ermee bezig bent om het op te lossen, terwijl als je met split werkt, dat je veel sneller de fout gevonden hebt. In een regexp doe je het misschien in minder regels, maar met split kan je de regels onafhankelijk van wat de values zijn eruit trekken en daarna kan je de values checken of ze wel goed zijn. Ik zou trouwens splitten op ': '. Je hebt geen regexp kennis nodig om deze values uitelkaar te trekken.

Je regexp voor country moet trouwens zijn:

^\w+:((?:\s+\S+)+)

Hoe je de (NL) uit die regel trekt, dat mag je zelf uitzoeken..

[ Bericht 28% gewijzigd door slacker_nl op 27-06-2008 10:46:47 ]
In theory there is no difference between theory and practice. In practice there is.
  vrijdag 27 juni 2008 @ 11:01:09 #230
12221 Tijn
Powered by MS Paint
pi_59726546
Some people, when faced with a problem, think "I know! I'll use regular expressions!". Now they have two problems.
  vrijdag 27 juni 2008 @ 11:02:39 #231
4159 GI
Nee ik heet geen JOE
pi_59726585
  vrijdag 27 juni 2008 @ 11:10:43 #232
187069 slacker_nl
Sicko pur sang
pi_59726810
quote:
Op vrijdag 27 juni 2008 11:02 schreef GI het volgende:
[ afbeelding ]
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?
In theory there is no difference between theory and practice. In practice there is.
pi_59726902
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

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
<?php
        $lines 
explode("\n"$buf);
        
        
$geopIp = array();
        
        foreach (
$lines AS $id => $content)
        {
            if (
substr($content08) == "Country:")
            {
                
$str substr($content9strlen($content) - 9);
                
                
$i strpos($str"(");
                
                if (
$i 0)
                {
                    
$geoIp['country'] = trim(substr($str0$i));
                    
$geoIp['country_code'] = trim(substr($str$i+12));
                }
                else
                {
                    
$geoIp['country'] = trim($str);
                }
            }
            elseif (
substr($content05) == "City:")
            {
                
$str substr($content6strlen($content) - 6);
                
                
$i strpos($str",");
                
                if (
$i 0)
                {
                    
$geoIp['city'] = trim(substr($str0$i));
                    
$geoIp['state'] = trim(substr($str$istrlen($str) - $i));
                }
                else
                {
                    
$geoIp['city'] = trim($str);
                    
$geoIp['state'] = "";
                }
            }
            elseif (
substr($content09) == "Latitude:")
            {
                
$geoIp['latitude'] = trim(substr($content10strlen($content) - 10));
            }
            elseif (
substr($content010) == "Longitude:")
            {
                
$geoIp['longitude'] = trim(substr($content11strlen($content) - 11));
            }
        }
?>


uitvoer

1
2
3
4
5
6
7
8
9
Array
(
    [country] => NETHERLANDS
    [country_code] => NL
    [city] => Groningen
    [state] => 
    [latitude] => 53.2167
    [longitude] => 6.56667
)
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  vrijdag 27 juni 2008 @ 11:15:45 #234
159841 Dzy
It is I
pi_59726965
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?
Niet in puur HTML, je kunt wel een linkje maken en met JavaScript een onClick event maken die een form submit.
"Reality is an illusion created by a lack of alcohol."
pi_59726978
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 ]
Brrrr, dat kan veel mooier Chandler! Ga eens met eigen gemaakte functies werken
  vrijdag 27 juni 2008 @ 11:16:48 #236
46383 Tiemie
sowieso wel!
pi_59726998
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 ]


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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function doRequest($url) {
    
$ch curl_init();
    
curl_setopt($chCURLOPT_URL$url);
    
curl_setopt($chCURLOPT_HEADERfalse); // geen header
    
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
    
curl_setopt($chCURLOPT_TIMEOUT10);
    
$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="" />
?>
  vrijdag 27 juni 2008 @ 11:18:38 #237
187069 slacker_nl
Sicko pur sang
pi_59727064
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.
Javascript heb ik nog geen kaas van gegeten, heb je ergens een stukje code liggen waarmee ik kan spelen?
In theory there is no difference between theory and practice. In practice there is.
  vrijdag 27 juni 2008 @ 11:22:36 #238
4159 GI
Nee ik heet geen JOE
pi_59727170
<a href="javascript:document.formName.submit();">Submit Form</a>
  vrijdag 27 juni 2008 @ 11:23:34 #239
4159 GI
Nee ik heet geen JOE
pi_59727202
Al is
<a href="#" onclick="document.formName.submit();">Submit Form</a>

netter natuurlijk
  vrijdag 27 juni 2008 @ 11:24:00 #240
12221 Tijn
Powered by MS Paint
pi_59727216
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?
  vrijdag 27 juni 2008 @ 11:30:22 #241
187069 slacker_nl
Sicko pur sang
pi_59727408
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
<?php
$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);
?>
In theory there is no difference between theory and practice. In practice there is.
  vrijdag 27 juni 2008 @ 11:32:26 #242
187069 slacker_nl
Sicko pur sang
pi_59727464
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?
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.
In theory there is no difference between theory and practice. In practice there is.
  vrijdag 27 juni 2008 @ 11:39:19 #243
12221 Tijn
Powered by MS Paint
pi_59727655
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).
Dan zou je ook eerst de GET-variabelen kunnen processen en daarna de user doorsturen naar een pagina met een cleanere URL.
quote:
En mensen die geen javascript hebben aanstaan, die moeten het gewoon aanzetten.
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?
  vrijdag 27 juni 2008 @ 11:46:27 #244
187069 slacker_nl
Sicko pur sang
pi_59727824
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?
Mmm, text browsing kan op die site, dus dat mag inderdaad niet breken.. Al kan Elinks wel Javascript aan...
In theory there is no difference between theory and practice. In practice there is.
  vrijdag 27 juni 2008 @ 11:47:32 #245
12221 Tijn
Powered by MS Paint
pi_59727853
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..
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.
  vrijdag 27 juni 2008 @ 11:48:12 #246
4159 GI
Nee ik heet geen JOE
pi_59727877
Herbouw dan gewoon een beetje waardoor je http://site/search/query kan doen. Ziet er gelikt zat uit
  vrijdag 27 juni 2008 @ 11:50:35 #247
187069 slacker_nl
Sicko pur sang
pi_59727933
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
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.

Maar we hebben als een ?search=bla in de post, als je meer dan 1 resultaat te terugkrijgt kom je in een table die alle resultaten teruggeeft met wat info. Als je meer info wilt hebben klik je op een linkje en daar zit ?search=found in (zeg maar), die link met ?search=found wil ik niet met een GET hebben, maar in een POST...
In theory there is no difference between theory and practice. In practice there is.
pi_59729843
quote:
Op vrijdag 27 juni 2008 11:16 schreef Scorpie het volgende:
Brrrr, dat kan veel mooier Chandler! Ga eens met eigen gemaakte functies werken
Kan idd veel mooier, maar dit is toch goed genoeg? lijkt mij
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 ]
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:30 schreef slacker_nl het volgende:
[ code verwijderd ]
Ziet er ook heel netjes uit maar is dat van mij dan zo langdradig ofzo?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  vrijdag 27 juni 2008 @ 13:41:47 #249
187069 slacker_nl
Sicko pur sang
pi_59730741
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?
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.

Je codebase is met 50% verminderd, dus je code was langdradig. Waarom iets doen in 50 regels als het in 20 kan? De footprint lijkt hetzelfde te zijn, dus je kan je eigen code gewoon houden

[ Bericht 4% gewijzigd door slacker_nl op 27-06-2008 14:08:57 ]
In theory there is no difference between theory and practice. In practice there is.
pi_59734822
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?
Een groot voordeel? Essentieel!
Misschien wil je ooit nog eens iets over SSL doen ofzo, en als je dat met fsockopen wil gaan doen.... succes!
Het is handig om zo breed en ver mogelijk te kijken, zodat je niet alleen de problemen oplost die je nu op dit moment tegenkomt maar ook klaar bent voor eventuele uitbreidingen die later kunnen komen. En dat je dus niet heel je applicatie weer vanaf de grond opnieuw moet opbouwen omdat je niet generiek en breed genoeg hebt ontworpen. Zonde van de tijd en moeite.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')