Archief - Zoho response naar variabelen/array

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

simontor

Legacy Member
Hallo,
Ik heb een PHP script dat via cURL verbinding maakt met de Zoho API (Open Document).
Dan is de response in deze 'stijl':
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'.
Dat wordt dan bijvoorbeeld:
Code:
URL=https://show.zoho.com/remoteedit.sas?doc=zPPG0w707d7wax67020x68F
WARNING=NULL
RESULT=TRUE

Nu probeer ik deze string op te splitsen in een array zodat ik url, warning en result apart kan gebruiken.
Ik heb al geprobeerd met regex_split() en explode() en het lukte niet om het deftig op te splitsen...
Kan iemand me helpen?

Groetn, Simon

adrianhates

Legacy Member
dat is ne rare response.. Hebben die geen XML of JSON output opties?

simontor

Legacy Member
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?

adrianhates

Legacy Member
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. :p Als ik straks thuis ben zal ik eens iets proberen.

Cycloon

Legacy Member
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.

simontor

Legacy Member
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:
PHP:
$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);
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?

adrianhates

Legacy Member
ge moet in uw foreach uw $line afgaan tot ge aan een '=' komt. Niet exploden op '=' :)

simontor

Legacy Member
adrianhates zei:
ge moet in uw foreach uw $line afgaan tot ge aan een '=' komt. Niet exploden op '=' :)
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:
$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);

Cycloon

Legacy Member
simontor zei:
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?

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.

adrianhates

Legacy Member
Cycloon zei:
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.

hij doet het anders nochtans wel goed met het beperken van de explode , daar had ik los overgekeken.

Cycloon

Legacy Member
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 :p
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan