1. #1
    simontor's Avatar
    Registered
    23/07/10
    Location
    Zwevegem
    Posts
    7
    iTrader
    0
    Mentioned
    0 Post(s)

    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':
    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
    no votes  

  2. #2
    adrianhates's Avatar
    Registered
    23/01/06
    Posts
    2,115
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    23/23
    dat is ne rare response.. Hebben die geen XML of JSON output opties?
    no votes  

  3. #3
    simontor's Avatar
    Registered
    23/07/10
    Location
    Zwevegem
    Posts
    7
    iTrader
    0
    Mentioned
    0 Post(s)
    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  

  4. #4
    adrianhates's Avatar
    Registered
    23/01/06
    Posts
    2,115
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    23/23
    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  

  5. #5
    Cycloon's Avatar
    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 character
    no votes  

  6. #6
    simontor's Avatar
    Registered
    23/07/10
    Location
    Zwevegem
    Posts
    7
    iTrader
    0
    Mentioned
    0 Post(s)
    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 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); 
    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?
    no votes  

  7. #7
    adrianhates's Avatar
    Registered
    23/01/06
    Posts
    2,115
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    23/23
    ge moet in uw foreach uw $line afgaan tot ge aan een '=' komt. Niet exploden op '='
    no votes  

  8. #8
    simontor's Avatar
    Registered
    23/07/10
    Location
    Zwevegem
    Posts
    7
    iTrader
    0
    Mentioned
    0 Post(s)
    Quote Originally Posted by adrianhates View Post
    This quote is hidden because you are ignoring this member. Show
    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 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("="$line2);
        
    array_push($vars$data);
    }

    var_dump($vars); 
    no votes  

  9. #9
    Cycloon's Avatar
    Registered
    18/01/04
    Location
    Melle
    Posts
    10,535
    iTrader
    56 (100%)
    Mentioned
    0 Post(s)
    Reputation
    27/102
    Quote Originally Posted by simontor View Post
    This quote is hidden because you are ignoring this member. Show
    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.
    “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 character
    no votes  

  10. #10
    adrianhates's Avatar
    Registered
    23/01/06
    Posts
    2,115
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    23/23
    Quote Originally Posted by Cycloon View Post
    This quote is hidden because you are ignoring this member. Show
    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.
    no votes  

  11. #11
    Cycloon's Avatar
    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 character
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in