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?
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
restituisceCodice 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";
?>
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
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
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:
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?Codice PHP:
'nr_rooms'
Del tipo:
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?Codice PHP:
'(nr_rooms)(city)'
www.TriX.IT - Web Development
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.
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
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
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:
dove l'array č, la sola chiave 15:Codice PHP:
$name_latitude = explode("name", $array[15]);
ho questo strano output:Codice PHP:
[15] => 42.8564229559 name Casa Giulia Country House
e cosė anche se metto appunto "name" nella reg_expr di preg_match: praticamente mi aggiunge '>' e '<' ma per me quasi a caso, cosa č?Codice PHP:
Array ( [0] => > 42.8564229559 < [2] => > [3] => > Casa Giulia Country House < [5] => > )
![]()
www.TriX.IT - Web Development
guardate che strano:
allora, considerando che la chiave 15 dell'array č:
ho fatto:Codice PHP:
[15] => 42.8564229559 name Casa Giulia Country House
che restituisce:Codice PHP:
$name_latitude = explode(" ", $array[15]);
Codice PHP:
Array ( [0] => 42.8564229559 name Casa [1] => Giulia [2] => Country [3] => House )
che restituisce:Codice PHP:
$name_latitude2 = explode(" ", $name_latitude[0]);
e se faccio:Codice PHP:
Array ( [0] => 42.8564229559 name Casa )
ottengo:Codice PHP:
$name_latitude2 = explode("name", $name_latitude[0]);
praticamente non mi divide sto cavolo di "name", ma come mai? che puō essere?Codice PHP:
Array ( [0] => > 42.8564229559 < [2] => > [3] => > Casa )
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
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.