Functia prezentata in aceasta pagina poate fi utilizata in PHP pentru impartirea /separarea unui sir alfanumeric (un sir cu mai multe sub-siruri de forma: "Nume Numar", separate printr-un anumit caracter).
Aceasta functie separa "Nume" de "Numar", si le adauga separat in doua array-uri, in ordinea lor din sir.
- Vedeti exemplele si comentariile din cod.

Codul functiei

/*
 primeste 3 argumente:
 - $str = sirul alfanumeric,
 - $dlm1 = caracterul ce separa Nume de Numar
 - $dlm2 = caracterul ce separa perechile de sub-siruri: "Nume Numar"

 Un sir in felul acesta:
     "Nume[$dlm1]Numar[$dlm2]Nume[$dlm1]Numar"
  - caracterele de separare ($dlm1, si $dlm2) pot fi orice caracter, de exemplu: spatiu, liniuta, punct, virgula, etc.
 returneaza un array bidimensional, cu Nume si Numar din $str separate in doua array-uri, in ordinea lor din sir
*/
function splitNumeNumar($str, $dlm1, $dlm2) {
  // Curs PHP-MySQL: https://marplo.net/php-mysql/
  // array cu caractere ce trebuie escapate (cu '\') in RegExp
  $chrs = array('.','(',')','[',']','<','>','?',"'",'^','*','-','+','\\','/');
  if(in_array($dlm1, $chrs)) $dlm1 = '\\'.$dlm1;
  if(in_array($dlm2, $chrs)) $dlm2 = '\\'.$dlm2;

  // obtine un array cu perechile 'Nume-Numar' din $str
  if(preg_match_all('/([a-z \._\-'. $dlm1 . $dlm2. ']+[0-9]+)/i', $str, $mt)) {
    $re = array();              // variabila pt datele care vor fi returnate
    $nrmt = count($mt[0]);      // Numar de sub-siruri

    // parcurge sub-sirurile gasite
    for($i=0; $i<$nrmt; $i++) {
      // separa Nume de Numar, le adauga in array-ul $re
      if(preg_match('/([a-z \._\-'. $dlm1. ']+)([0-9]+)/i', $mt[0][$i], $mt2)) {
        $re['Nume'][$i] = trim($mt2[1], ' '. $dlm1);
        $re['num'][$i] = $mt2[2];
      }
    }

    return $re;
  }
  else return false;
}
- Exemplu:
<?php
// AICI adauga functia splitNumeNumar()

// sir cu Nume si Numar separate prin punct '.', perechile de sub-siruri separate prin virgula ','
$str1 = 'Curs PHP-MySQL.2013, CoursesWeb.net.2011, MarPlo.net.2009';
$split_str1 = splitNumeNumar($str1, '.', ',');

//  text cu Nume si Numar separate prin punct spatiu, perechile de sub-siruri separate prin virgula ','
$str2 = 'Code Snippets 12, Cod PHP 2011, MarPlo.net Cursuri 2009';
$split_str2 = splitNumeNumar($str2, ' ', ',');

//  sir cu Nume si Numar si perechile de sub-siruri separate prin spatiu
$str3 = 'Tutoriale PHP-MySQL 23 Lectii Ajax 9 Web Development 2013';
$split_str3 = splitNumeNumar($str3, ' ', ',');

// test
echo "<pre>// De la \$str1 \n";
var_export($split_str1);

echo "\n// De la \$str2 \n";
var_export($split_str2);

echo "\n// De la \$str3 \n";
var_export($split_str3);
echo '</pre>';
Rezultat:
// De la $str1 
array (
  'Nume' => array (
    0 => 'Curs PHP-MySQL',
    1 => 'CoursesWeb.net',
    2 => 'MarPlo.net',
  ),
  'num' => array (
    0 => '2013',
    1 => '2011',
    2 => '2009',
  )
)
// De la $str2 
array (
  'Nume' => array (
    0 => 'Code Snippets',
    1 => 'Cod PHP',
    2 => 'MarPlo.net Cursuri',
  ),
  'num' => array (
    0 => '12',
    1 => '2011',
    2 => '2009',
  )
)
// De la $str3 
array (
  'Nume' => array (
    0 => 'Tutoriale PHP-MySQL',
    1 => 'Lectii Ajax',
    2 => 'Web Development',
  ),
  'num' => array (
    0 => '23',
    1 => '9',
    2 => '2013',
  )
)

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tip de <input> creaza o paleta de culori pentru selectare culoare?
type="text" type="color" type="date"
<input type="color" name="get_color" />
Care metoda CSS roteste elementul HTML la un anumit numar de grade?
scale() translate() rotate()
#some_id:hover {
  transform: rotate(60deg);
  -ms-transform: rotate(60deg);    /* IE 9 */
  -moz-transform: rotate(60deg);   /* Firefox */
}
Click pe functia care returneaza numarul cel mai mare.
pow() min() max()
var maxn = Math.max(8, 4, 88, 56);
alert(maxn);      // 88
Ce functie previne ca un fisier sa fie inclus mai mult de o data intr-o pagina?
include() include_once() require()
include_once("un_fisier.php");
Care este traducerea corecta pentru: "Ahead of time"?
Peste timp La timp Inainte de vreme
Most people arrived ahead of time.
- Cei mai multi oameni au sosit inainte de vreme (prea devreme).
Indicati traducerea corecta a cuvantului "buenĂ­simo"
mai bun mai putin bun extrem de bun
Este fruto es buenĂ­simo.
- Acest fruct este extrem /nemaipomenit de bun.
Impartire Sir Alfanumeric in Array

Last accessed pages

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (69899)
  2. Coduri pt culori (28001)
  3. Curs si Tutoriale JavaScript (15187)
  4. Trecutul simplu - Exercitii si teste incepatori (9213)
  5. Exercitii engleza - English Tests and exercises - Grammar (31999)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (2218)
  2. Curs HTML gratuit Tutoriale HTML5 (1595)
  3. Curs si Tutoriale JavaScript (1574)
  4. Curs PHP MySQL, Tutoriale si Scripturi PHP (1526)
  5. Curs CSS Online Tutoriale CSS3 (1401)