"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs
dit kan sscanf niet volgens mij
Doet iets met Cloud (MS/IBM)
Dacht het toch wel, in de manual staat namelijk:Op zondag 14 juli 2002 00:22 schreef D2k het volgende:
dit kan sscanf niet volgens mij
PHP:
1
| <?// get author info and generate DocBook entry$auth = "24\tLewis Carroll";$n = sscanf($auth,"%d\t%s %s", &$id, &$first, &$last);echo "<author id='$id'> <firstname>$first</firstname> <surname>$last</surname></author>\n";?> |
"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs
ff de manual erbij gepakt en verdomdOp zondag 14 juli 2002 00:23 schreef _Mo_ het volgende:
[..]
Dacht het toch wel, in de manual staat namelijk:
[php
um moet je die @ niet als \@ zetten?
of is dit niet eenvoudiger te regexen?
Doet iets met Cloud (MS/IBM)
Had ik ook al trouwens geprobeerd... maar misschien is inderdaad regex nu de enige oplossing. Maar dit leek me in de eerste instantie lekker makkelijkOp zondag 14 juli 2002 00:24 schreef D2k het volgende:
[..]
ff de manual erbij gepakt en verdomd
um moet je die @ niet als \@ zetten?
of is dit niet eenvoudiger te regexen?
Ik vind het toch vaag dat het niet werkt, kan toch weinig fout doen in zo'n kort stukje.. then again, I just might
"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs
werkt dat voorbeeld wel trouwens?Op zondag 14 juli 2002 00:27 schreef _Mo_ het volgende:
[..]
Had ik ook al trouwens geprobeerd... maar misschien is inderdaad regex nu de enige oplossing. Maar dit leek me in de eerste instantie lekker makkelijk(ben niet zo heel erg thuis in regex
)
Ik vind het toch vaag dat het niet werkt, kan toch weinig fout doen in zo'n kort stukje.. then again, I just mightBugje dan?
Doet iets met Cloud (MS/IBM)
Ja...had ik eigenlijk helemaal niet getest... hummzOp zondag 14 juli 2002 00:33 schreef D2k het volgende:
[..]
werkt dat voorbeeld wel trouwens?
Volgens mij heeft de punt als enige in de format string een betekenis... maar \. werkt ook niet, of %. of.. wat
'k heb nu trouwens een ereg die de email checked. Maar ik zou toch graag willen weten wat ik nou fout doe... want ik begrijp het echt niet
"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs
weer zo'n probleem met sscanf, ik heb een filenaam blaat.gif bijvoorbeeld, en daar wil ik de naam en extensie scheiden, dus naam: blaat en extensie gif ... nu wil ik dat met een sscanf doen, dus krijg ik zoiets als dit:
Maar de hele string zit in $Name, het voorbeeld uit de manual werkt wel, maar daar zit dus geen punt in. Is er een manier om die punt de "escapen"? \. werkt niet. Hoop dat iemand kan helpen...
PHP:
1
| <?sscanf( "blaat.gif", "%s.%s", &$Name, &$Extension);?> |
Maar de hele string zit in $Name, het voorbeeld uit de manual werkt wel, maar daar zit dus geen punt in. Is er een manier om die punt de "escapen"? \. werkt niet. Hoop dat iemand kan helpen...
"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs
Lees het commentaar op php.net!
sscanf is heel dom en gaat geen 'moeite' doen om aan 't gegeven formaat te voldoen.
Dat betekent dat als het formaat bijvoorbeeld: "aaa%s" is en de invoer begint toevallig met "aaa", dan krijg je de rest in je string-variabele. Als je invoer niet met "aaa" begint geeft sscanf 't op. Zodra 'ie een variabele gaat vullen, stopt sscanf daar pas mee wanneer er whitspace langskomt.
Als je dus met format "%s.%s" probeert "blaat.blaat" in te lezen, dan stopt sscanf die hele string in de eerste string variabele, komt tot de conclusie dat de punt niet meer te matchen valt en houdt er mee op.
Voor echt parsen heb je geavanceerdere methoden, zoals reguliere expressies en functies die strings opdelen nodig. sscanf is hier nooit voor bedoeld.
Je kunt dus ook niet "Mijn Naam/Mijn Adres" matchen met "%s/%s" of de hier op geposte varianten daarop.
sscanf is heel dom en gaat geen 'moeite' doen om aan 't gegeven formaat te voldoen.
Dat betekent dat als het formaat bijvoorbeeld: "aaa%s" is en de invoer begint toevallig met "aaa", dan krijg je de rest in je string-variabele. Als je invoer niet met "aaa" begint geeft sscanf 't op. Zodra 'ie een variabele gaat vullen, stopt sscanf daar pas mee wanneer er whitspace langskomt.
Als je dus met format "%s.%s" probeert "blaat.blaat" in te lezen, dan stopt sscanf die hele string in de eerste string variabele, komt tot de conclusie dat de punt niet meer te matchen valt en houdt er mee op.
Voor echt parsen heb je geavanceerdere methoden, zoals reguliere expressies en functies die strings opdelen nodig. sscanf is hier nooit voor bedoeld.
Je kunt dus ook niet "Mijn Naam/Mijn Adres" matchen met "%s/%s" of de hier op geposte varianten daarop.
Verwijderd
Dit is wel te doen met sscanf, je moet er alleen een iets ingewikkeldere syntax voor gebruiken:
Wat dit doet: Eerste gedeelte leest string, waar geen "@" inzit, hierna komt de @ van het emailadres, en naarna het een string zonder ".", en in $z komt alles naar de punt.
Ik heb voor de zekerheid de "@" en "." ge-escaped met een \, maar weet niet zeker of dit moet of wel werkt, maar daar kom je zelf wel uit gok ik.
code:
1
| sscanf($emailadres, "%[^\@]\@%[^\.]\.%s", $x, $y, $z); |
Wat dit doet: Eerste gedeelte leest string, waar geen "@" inzit, hierna komt de @ van het emailadres, en naarna het een string zonder ".", en in $z komt alles naar de punt.
Ik heb voor de zekerheid de "@" en "." ge-escaped met een \, maar weet niet zeker of dit moet of wel werkt, maar daar kom je zelf wel uit gok ik.
Als je er dan toch een halve regexp van maakt, doe het dan gewoon met preg_matchOp woensdag 17 juli 2002 09:54 schreef T1cal het volgende:
Verwijderd
Heh, die functie kende ik nog nietOp woensdag 17 juli 2002 11:38 schreef ACM het volgende:
[..]
Als je er dan toch een halve regexp van maakt, doe het dan gewoon met preg_match
Heb zelf lichte voorkeur voor functies waar man-pages van zijn, zal wel door teveel C code komen
Pagina: 1