Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    operare con le stringhe

    Salve, data una stringa del genere:

    nr_rooms 20 city Rome hotel_id 81970 address Via M. Dionigi 45

    come faccio a dividere la stringa, e metterla in un array, in base la valore in grassetto ed usando come dato quello in corsivo?
    www.TriX.IT - Web Development

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Codice PHP:
    <?php
    $string 
    "nr_rooms 20 city Rome hotel_id 81970 address Via M. Dionigi 45";

    preg_match("/^nr_rooms(.*)city(.*)hotel_id(.*)address(.*)/",$string,$result);

    echo 
    "<pre>\n";

    var_dump ($result);

    echo 
    "</pre>\n";
    ?>
    restituisce

    array(5) {
    [0]=>
    string(62) "nr_rooms 20 city Rome hotel_id 81970 address Via M. Dionigi 45"
    [1]=>
    string(4) " 20 "
    [2]=>
    string(6) " Rome "
    [3]=>
    string(7) " 81970 "
    [4]=>
    string(18) " Via M. Dionigi 45"
    }

    Andrea

  3. #3
    per caso c'č un limite nella lunghezza della stringa da dargli? io ho un array dove ogni chiave,dalla 1 fino alla 999 č cosė composta, per es voce[1]:

    [1] => nr_rooms 20 city Rome checkin to from 14:00 minrate 60 hotel_id 81970 url http://www.booking.com/hotel/it/angelhotel.html review_nr 134 address Via M. Dionigi 45 commission 0 ranking 36874 city_id -126693 review_score 7.525 location longitude 12.4715960026 latitude 41.9059421939 name Angel Hotel preferred 0 hoteltype_id 14 class_is_estimated 0 countrycode it is_closed 0 checkout to 11:00 from zip 00193 maxrate 215 class 2 currencycode EUR


    come faccio a scomporre questa stringa dell'array con i valori che voglio io? usando il metodo precedente non va
    www.TriX.IT - Web Development

  4. #4
    se invece di preg_match uso preg_split, l'espressione regolare precedente non funziona pių, neanche dandogli una stringa ben formattata invece dell'array.
    Praticamente, tornando all'espressione regolare, se usando:

    Codice PHP:
    'nr_rooms' 
    mi trova tutte le occorrenze e mi mette quello che trova in un array, come posso fare a far trovare 2 o pių parametri e suddividerli in array?
    Del tipo:
    Codice PHP:
    '(nr_rooms)(city)' 
    so che questa espressione regolare non funziona, ma come posso fare a far suddividere i parametri della stringa data usando nr_rooms e city ed eventualmente altri?
    www.TriX.IT - Web Development

  5. #5
    Prova in questo modo:

    Codice PHP:

    $string
    ='nr_rooms 20 city Rome hotel_id 81970 address Via M. Dionigi 45';

    $array=preg_split(
      
    # inserisci le parole chiave suddivise da pipe
        
    '/\\s*(nr_rooms|city|hotel_id|address)\\s*/i' 
        
    ,$string
        
    ,-1
        
    ,PREG_SPLIT_NO_EMPTY
    ); 
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  6. #6
    grazie 1000 funziona ora anche con l'array
    ma una domanda, in sostanta, che differenza c'č tra preg_split e preg_match?

    saluti
    www.TriX.IT - Web Development

  7. #7
    ops, parlato troppo presto

    praticamente se come chiave per dividere metto "hotel", mi trova anche "hotel_id" me lo smezza in "_id". C'č un modo per dirgli di dividere solo dove c'č il valore chiave, che in ogni caso ha uno spazio prima e dopo? nel senso, che qualsiasi valore della stringa, per es hotel, č sicuramente presente nella stringa stessa con spazio davanti e dietro quindi " hotel ", come hotel_id č sicuramente " hotel_id ".
    Spero di essere stato chiaro.

    thanks
    www.TriX.IT - Web Development

  8. #8
    allora, aggiorno:
    diciamo che praticamente ho messo prima city_id e poi city nella reg_expr e cosė funziona.
    Ho perō uno strano problema. Appena metto di cercare "name", ed ho fatto un esempio semplice del tipo:
    Codice PHP:
    $name_latitude explode("name"$array[15]); 
    dove l'array č, la sola chiave 15:
    Codice PHP:
    [15] => 42.8564229559 name Casa Giulia Country House 
    ho questo strano output:
    Codice PHP:
    Array ( [0] =>  > 42.8564229559 <  [2] => >  [3] =>  > Casa Giulia Country House <  [5] => > ) 
    e cosė anche se metto appunto "name" nella reg_expr di preg_match: praticamente mi aggiunge '>' e '<' ma per me quasi a caso, cosa č?
    www.TriX.IT - Web Development

  9. #9
    guardate che strano:
    allora, considerando che la chiave 15 dell'array č:
    Codice PHP:
    [15] => 42.8564229559 name Casa Giulia Country House 
    ho fatto:
    Codice PHP:
    $name_latitude explode(" "$array[15]); 
    che restituisce:
    Codice PHP:
    Array ( [0] => 42.8564229559 name Casa [1] => Giulia [2] => Country [3] => House 
    Codice PHP:
    $name_latitude2 explode(" "$name_latitude[0]); 
    che restituisce:
    Codice PHP:
    Array ( [0] => 42.8564229559 name Casa 
    e se faccio:
    Codice PHP:
    $name_latitude2 explode("name"$name_latitude[0]); 
    ottengo:
    Codice PHP:
    Array ( [0] =>  > 42.8564229559 <  [2] => >  [3] =>  > Casa 
    praticamente non mi divide sto cavolo di "name", ma come mai? che puō essere?

    sembra che visto che i dati provengono da un db xml, si portino dietro parte della formattazione del tipo <value>....</value> etc...
    www.TriX.IT - Web Development

  10. #10
    Ti ho perso. Cmq come hai capito la sequenza delle parole chiave deve seguire questa logica: se delle parole sono comprese in altre parole, come nel caso di city e city_id devi ordinarle mettendo prima city_id e poi city.
    Ma mettendo tutte le parole chiave ti genera un risultato scorretto?

    Posta un esempio completo.
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.