Ik heb dus hetvolgende probleem: (Misschien beter uitgelegd in mijn vorige topic: [rml][ PHP] Meerdere variabelen maken van 1 variabel[/rml])
Nu wil ik dus de volgende array krijgen: (let op: || is dus een escape karakter voor | aangezien je die niet kunt gebruiken omdat anders de code word gesplit!)
Nu had ik al de volgende code in een vorig topic gekregen, namelijk:
Het probleem dat ik hiermee krijg is dat hij de volgende array gaat maken:
Terwijl hij na 2 || weer opnieuw moet beoordelen of hij moet worden gesplit of niet. Nu heb ik zelf een script gemaakt die letter voor letter gaat kijken wat hij moet doen:
Werkt opzich perfect maar heeft 1 groot nadeel en dat is de parsetijd. Hij doet er namelijk 60 keer langer over dan het hier boven opgegeven preg_split script. Over dit script gaat straks tot 8 meg aan data, daarom zoek ik een zo snel mogelijke functie, heeft iemand nog ideeën om deze functie te versnellen? of bovenstaand script (preg_split) goed te laten werken?
Let wel, de normale functies zoals: Split en Explode gaan hier dus niet zomaar op. (simpel splitten op | eveneens niet, omdat er een escape aanwezig is (de mogelijkheid moet dus blijven bestaan de | te gebruiken, maar die word dan vervangen door || waarna dit tijdens het parseproces weer word teruggevormt tot |)
Aangezien ik de basisbeginsellen weet van Regex (hetgeen waar bovenstaande preg_split mee is uitgerust) vraag ik dus jullie hulp. Mocht je nog een hele goede documentatie hebben (waarna ik zelf ook al heb gezocht, maar niet gevonden) waarin soortgelijke problemen ook worden aangepakt hoor ik het graag.
(http://82.171.22.30/derek/test.php zie hier het verschil tussen de preg_split en mijn zelfgemaakte functie... preg_split is tot 60 keer sneller! alleen werkt niet geheel goed (zie het probleem hierboven))
PHP:
1
| $string="iets=blaat|iets2=blabla||blabla|iets3=nogmeer tekst|||test4=laatste test"; |
Nu wil ik dus de volgende array krijgen: (let op: || is dus een escape karakter voor | aangezien je die niet kunt gebruiken omdat anders de code word gesplit!)
code:
1
2
3
4
5
6
| Array ( [0] => "iets=blaat", [1] => "iets2=blabla|blabla", [2] => "iets3=nogmeer tekst|", [3] => "test4=laatste test" ) |
Nu had ik al de volgende code in een vorig topic gekregen, namelijk:
PHP:
1
| $keyValuePairs = preg_split("/(?<!\\|)\\|(?!\\|)/", $string); |
Het probleem dat ik hiermee krijg is dat hij de volgende array gaat maken:
code:
1
2
3
4
5
| Array ( [0] => "iets=blaat", [1] => "iets2=blabla||blabla", [2] => "iets3=nogmeer tekst|||test4=laatste test" ) |
Terwijl hij na 2 || weer opnieuw moet beoordelen of hij moet worden gesplit of niet. Nu heb ik zelf een script gemaakt die letter voor letter gaat kijken wat hij moet doen:
PHP:
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
| function parser($string) { $temp = Array(); $array = 0; $found_escape = 0; for($x=0;$x<strlen($string);$x++) { if($found_escape && $string[$x] != "|") { $array++; $temp[$array] .= $string[$x]; $found_escape = 0; } elseif(!$found_escape && $string[$x] == "|") { $found_escape = 1; } elseif($found_escape && $string[$x] == "|") { $found_escape = 0; $temp[$array] .= $string[$x]; } else { $temp[$array] .= $string[$x]; } } return $temp; } |
Werkt opzich perfect maar heeft 1 groot nadeel en dat is de parsetijd. Hij doet er namelijk 60 keer langer over dan het hier boven opgegeven preg_split script. Over dit script gaat straks tot 8 meg aan data, daarom zoek ik een zo snel mogelijke functie, heeft iemand nog ideeën om deze functie te versnellen? of bovenstaand script (preg_split) goed te laten werken?
Let wel, de normale functies zoals: Split en Explode gaan hier dus niet zomaar op. (simpel splitten op | eveneens niet, omdat er een escape aanwezig is (de mogelijkheid moet dus blijven bestaan de | te gebruiken, maar die word dan vervangen door || waarna dit tijdens het parseproces weer word teruggevormt tot |)
Aangezien ik de basisbeginsellen weet van Regex (hetgeen waar bovenstaande preg_split mee is uitgerust) vraag ik dus jullie hulp. Mocht je nog een hele goede documentatie hebben (waarna ik zelf ook al heb gezocht, maar niet gevonden) waarin soortgelijke problemen ook worden aangepakt hoor ik het graag.
(http://82.171.22.30/derek/test.php zie hier het verschil tussen de preg_split en mijn zelfgemaakte functie... preg_split is tot 60 keer sneller! alleen werkt niet geheel goed (zie het probleem hierboven))