Buongiorno, sto provando ad usare una funzione trovata in rete per dividere nome e cognome.
Di seguito la funzione:
Funziona bene e il risultato che produce è il seguente:
Ora a me servirebbe che firstname e lastname fossero inserite in due variabili.. ossia $nome=firstname e $cognome=lastname...
Ho provato in tutte le maniere ma non riesco.. Cosa sbaglio ??
Ovviamente ho gia provato usando $result[0]=$nome etc... mi dice che non c'è nulla all'interno... invece l'array di $result riporta quei due valori..
Di seguito la funzione:
PHP:
<?php
class splitFullName {
/**
* Pattern
*
* @var string
* @access private
*/
private $pattern = null;
/**
* Modello utilizzato per comporre il pattern e distinguere il cognome dal nome
*
* @var array
* @access private
*/
private $model = array(
'lastname' => "([adeilo']{0,4}\s*[\w']+)",
'firstname' => "([\w']+\s*[\w'\.]*\s*[\w'\.]*)"
);
public function __construct() {
// Concatena gli elementi di $model per creare il pattern
$buffer = array();
foreach ($this->model as $key => $pattern) {
$buffer[] = $pattern;
}
$this->pattern = "/^" . implode('\s+', $buffer) . "$/i";
}
/**
* Elabora la stringa contenente il cognome e il nome provando a separare i due
* elementi in un array
*
* @param string $fullName Stringa contenente il cognome e il nome
* @access public
* @return array Restituisce un array sulla base dell'attributo $model, se il
* pattern non viene riconosciuto, l'array conterra' $fullName nel primo
* elemento
*/
public function split($fullName) {
$fullName = trim($fullName);
$matches = array();
if (preg_match($this->pattern, $fullName, $matches)) {
$buffer = array();
for ($i = 1, $l = count($matches); $i < $l; $i++) {
$buffer[] = $matches[$i];
}
$result = array_combine(array_keys($this->model), $buffer);
return $result;
}
$buffer = array_fill(0, count($this->model), '');
$buffer[0] = $fullName;
$result = array_combine(array_keys($this->model), array($buffer, ''));
return $result;
}
}
$s = new splitFullName();
$fullName = "PIPPO FRANCESCO";
$result = $s->split($fullName);
print_r($result);
?>
Codice:
Array ( [lastname] => PIPPO [firstname] => FRANCESCO )
Ora a me servirebbe che firstname e lastname fossero inserite in due variabili.. ossia $nome=firstname e $cognome=lastname...
Ho provato in tutte le maniere ma non riesco.. Cosa sbaglio ??
Ovviamente ho gia provato usando $result[0]=$nome etc... mi dice che non c'è nulla all'interno... invece l'array di $result riporta quei due valori..