Page 1 sur 1

Chaine contient le début d'un mot

Posté : 07 mai 2016, 04:15
par chaipaskoa
Bonjour à tous,

J'ai deux variables. Une variable $entry qui contient ce que a tapé l'utilisateur dans le champs de recherche et une variable $refs qui contient un tableau de référence.

Le but du jeu est de ressortir les références qui correspondent à $entry, ce que j'ai fait dans le foreach. Cela fonctionne. Néanmoins, cela doit aussi pouvoir gérer le cas où l'utilisateur à bien tapé le début d'une ou de plusieurs références. Par exemple à l'heure actuelle si je tape "VMS" cela me ressort bien les deux références 'VMS451F', 'VMS498D' or je voudrai aussi qu'en tapant "VMSFS" il me ressorte aussi ces deux références étant donné que le début de la recherche est correct et que l'utilisateur s'est juste trompé sur la fin.

Le plus drôle dans tout ça est que j'avais réussi à le faire en deux ou trois lignes il y a deux semaines et que j'ai malencontreusement perdu le fichier. J'ose espérer que quelqu'un saura m'ouvrir les yeux :)
<?php


$entry = 'VMSFG';

$refs = [
	'VMS451F',
	'VMS498D',
	'F451FDD',
	'D3547D1',
	'G654D51'
];


$results = [];

foreach($refs as $ref) {
	if (strpos($ref, $entry) !== false) {
		$results[] = $ref;
	} 

        // Ici, le code de ce que je cherche
	
}


print_r($results);

Merci par avance pour votre aide :D

Re: Chaine contient le début d'un mot

Posté : 07 mai 2016, 15:19
par finipe
J'aurais fait un truc dans ce genre là :

Code : Tout sélectionner

<?php $entry = 'VMSFG'; $refs = array('VMS451F', 'VMS498D', 'F451FDD', 'D3547D1', 'G654D51'); $results = array(); foreach($refs as $ref) { if (substr($ref, 0, 3) == substr($entry, 0, 3)) { $results[] = $ref; } } print_r($results);
Après, pour une recherche non limitative aux 3 premiers caractères, il faudrait utiliser preg_match avec un filtre adapté.