-
25-07-2010, 19:36 #1
Zoho response naar variabelen/array
Hallo,
Ik heb een PHP script dat via cURL verbinding maakt met de Zoho API (Open Document).
Dan is de response in deze 'stijl':
Dat wordt dan bijvoorbeeld:Code:URL=[document url value] WARNING=[warning message] RESULT=[TRUE/FALSE] Note: RESULT field indicates the status of the action. Zoho will return 'TRUE' if the request is posted successfully, else the value is 'FALSE'. Similarly, if any of the parameters are found to be incorrect, you will get a warning message stating the same otherwise the value returned will be 'NULL'.
Nu probeer ik deze string op te splitsen in een array zodat ik url, warning en result apart kan gebruiken.Code:URL=https://show.zoho.com/remoteedit.sas?doc=zPPG0w707d7wax67020x68F WARNING=NULL RESULT=TRUE
Ik heb al geprobeerd met regex_split() en explode() en het lukte niet om het deftig op te splitsen...
Kan iemand me helpen?
Groetn, Simonno votes
-
-
26-07-2010, 11:03 #2
dat is ne rare response.. Hebben die geen XML of JSON output opties?
no votes
-
27-07-2010, 15:21 #3
Zeg da wel! Een zeer rare response! Tzou veel makkelijker zijn met XML nzo..
Maar kheb al op hun site gekeekn en daar lijktr nergens iets te staan over een deftige respons. Dat is volgns mij de enige mogelijk
Maar nu zitk er wel mee. Kheb geen flauw idee hoe ik uit deze string een deftige array krijg..
Iemand?no votes
-
27-07-2010, 15:30 #4
Ge zult dan zowiezo per lijn moete werken ,want ook al niet vanzelfsprekend is.
ge zou die variabele namen in nen array kunnen steken. Dan de lijn explode op '=' . De eerste value in de array pakken, kijken of die in de variabele array zit. zoja dan hebt ge een response variabele , die dan explode op de value uit de variabele array + = en het eerste element is dan uw value, uw key is de value uit de variabele array.
Sorry dat het niet duidelijk is , maar heb geen tijd om het duidelijk uit te leggen.
Als ik straks thuis ben zal ik eens iets proberen.
no votes
-
27-07-2010, 16:04 #5Approved 9liver
- Registered
- 18/01/04
- Location
- Melle
- Posts
- 10,535
- iTrader
- 56 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/102
Toch niet zo moeilijk?
Je verwerkt lijn per lijn tot de eerste lege lijn. Bij elke lijn loop je met een while lus door alle tekens tot je een '=' teken bent tegengekomen. Op die plaats splits je dan met substr. Dat kan je perfect in een mooie functie steken zodat deze een array weergeeft met als sleutel die identifiers en als value de waarde. Bij gebrek aan een PHP testruimte kan ik de code zelf niet maken/testen, anders was dat op 10 minuutjes geklaard.“In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
PSN: Cycloon - Final Fantasy XIV: A realm reborn characterno votes
-
27-07-2010, 16:59 #6
Ok! Bedankt! Ik wist niet datr newlines waren in de response.
Want alsk een request doe in Firefox dan zettie alles op 1 lijn..
Ik heb wat geprobeerd en kwam op dit uit:
Het enige probleem is die '=' na doc. Nu kan ik zoals Cycloon zegt wel met while werkn maar vertraagt dat mijn script niet te veel of maakt dat toch niets uit bij zon kleine string?PHP Code:$response = "URL=https://show.zoho.com/remoteedit.sas?doc=zPPG0w707d7wax67020x68F\n WARNING=NULL\n RESULT=TRUE\n";
$response = explode("\n", $response);
$vars = array();
foreach ($response as $line) {
$data = explode("=", $line);
array_push($vars, $data);
}
var_dump($vars);
no votes
-
27-07-2010, 17:02 #7
ge moet in uw foreach uw $line afgaan tot ge aan een '=' komt. Niet exploden op '='
no votes
-
27-07-2010, 17:06 #8
Net na mijn post hebk het gevondn zonder nog een while, foreach.
Kheb gwn een limit op mijn explode gezet en da werkt nu heel goed.
Bedankt aan iedereen!
Hier nog eens de code:
PHP Code:$response = "URL=https://show.zoho.com/remoteedit.sas?doc=zPPG0w707d7wax67020x68F\n WARNING=NULL\n RESULT=TRUE\n";
$response = explode("\n", $response);
$vars = array();
foreach ($response as $line) {
$data = explode("=", $line, 2);
array_push($vars, $data);
}
var_dump($vars);
no votes
-
27-07-2010, 17:44 #9Approved 9liver
- Registered
- 18/01/04
- Location
- Melle
- Posts
- 10,535
- iTrader
- 56 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/102
Sneller dan een while lus zal je geen oplossing kunnen bedenken, al die string functies gaan namelijk net op dezelfde manier werken. Er is geen andere hocus pocus manier die '=' tekens kan vinden zonder ze allemaal te bekijken. Als je te lui bent om zelf een while lus in te typen kan je ook altijd deze functie gebruiken: PHP: mb_strpos - Manual, deze geeft direct de locatie van het eerste gezochte teken.
“In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
PSN: Cycloon - Final Fantasy XIV: A realm reborn characterno votes
-
27-07-2010, 19:44 #10no votes
-
27-07-2010, 21:28 #11Approved 9liver
- Registered
- 18/01/04
- Location
- Melle
- Posts
- 10,535
- iTrader
- 56 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/102
De explode manier voldoet hier ook uiteraard. Achter de schermen gebruikt dat natuurlijk ook een while lus, dat is eigenlijk het enige punt dat ik wou maken
“In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
PSN: Cycloon - Final Fantasy XIV: A realm reborn characterno votes

