/ / Estrazione di parti di un indirizzo da una stringa in PHP - php, sottostringa

Estrazione di parti di un indirizzo da una stringa in PHP - php, sottostringa

Ho creato un modulo html in cui puoi inserire il tuoindirizzo in una singola stringa. Come posso estrarre il numero civico, il nome della via e il tipo di strada (mezzaluna, strada, strada, ecc.) In PHP? Non sono sicuro della lunghezza della stringa che inseriranno e potrebbe non estrarre le informazioni corrette.

Si prega gentilmente di aiutare come sono nuovo nella codifica in PHP.

Ecco il mio codice qui sotto:

$address = $_POST["address"];

echo "Your address is: $address <br>";

$addressSubstring = substr($address,0 , 15);

echo "Address: $addressSubstring <br>";

$strNumber = substr($addressSubstring, 0, 2);

$strName = substr($addressSubstring, 2, 8);

$strType = substr($addressSubstring, 8, 15);

echo "Your street number is: $strNumber <br>";
echo "Your street name is: $strName <br>";
echo "Your street type is: $strType <br>"

risposte:

0 per risposta № 1

Tenendo presente che i tipi di strada sono "crescent | road | street":

L'utilizzo di espressioni regolari può risolvere il problema:

<?php
$address = "43 Willow Street"; // $_POST["address"] or "35 Hanover Crescent & 52 Longford Road";

preg_match_all("/(d+)(.+?)(crescent|road|street)/i", $example, $out_arr);

// $no_of_addresses_found = count($out_arr[0]); // in case of future improvements
$strNumber = $out_arr[1][0];     // 43
$strName = trim($out_arr[2][0]); // Willow
$strType = $out_arr[3][0];       // Street

echo "Your street number is: $strNumber <br>";
echo "Your street name is: $strName <br>";
echo "Your street type is: $strType <br>"

1 per risposta № 2

Non puoi fare affidamento su sottostringhe in posizioni e lunghezze fisse come nel tuo codice, dato che cambieranno ogni volta.

Senza utilizzare alcuna API o AI, il meglio che puoi fare è creare un array con i tipi di strada (e le loro abbreviazioni) e controllare se una qualsiasi di quelle parole è nella stringa.

Per quello puoi usare strpos per ogni parola o espressioni regolari corrispondenti.

Quindi puoi rimuovere quella parola dalla stringa,e ottenere la posizione del primo spazio usando nuovamente lo strpos. Quindi utilizzare tale posizione per ottenere la sottostringa prima dello spazio (numero civico) e della sottostringa dopo lo spazio (nome della via).