Variabile in Array

  • Creatore Discussione Creatore Discussione Emix
  • Data di inizio Data di inizio

Emix

Utente Attivo
15 Feb 2010
596
0
16
Buongiorno, sto provando ad usare una funzione trovata in rete per dividere nome e cognome.
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);
?>
Funziona bene e il risultato che produce è il seguente:

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..
 

Discussioni simili