Recherche si superieur a la lettre L (ou compris entr L et Z

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Recherche si superieur a la lettre L (ou compris entr L et Z

par Ryle » 24 févr. 2006, 11:18

En résumé:
  • PHP 3 chaine[$i] OK
  • PHP 4 chaine{$i} recommandé, chaine[$i] obsolète
  • PHP 5.1 chaine{$i} génère une erreur E_STRICT, chaine[$i] recommandé
  • PHP 6 chaine[$i] OK, chaine{$i} interdit
Et ensuite on veut faire croire que le php c'est simple.... ;)

Donc en gros, je garde les crochets, au moins ça marchera partout même si c'est déprécié en php4. Merci pour la réponse et les explications :)

par Ripat » 23 févr. 2006, 21:44

Petite question parallèle suite au edit de Mario : dans ce topic http://www.phpfrance.com/forums/voir_re ... php#102957, c'est le contraire qui est indiqué concernant les [] et les {} ...

Quelqu'un peut-il me dire qui a raison et lequel il vaut mieux utiliser ?
En résumé:
  • PHP 3 chaine[$i] OK
  • PHP 4 chaine{$i} recommandé, chaine[$i] obsolète
  • PHP 5.1 chaine{$i} génère une erreur E_STRICT, chaine[$i] recommandé
  • PHP 6 chaine[$i] OK, chaine{$i} interdit
C'est fou ce qu'on s'amuse hein? :wink:

Donc, si vous pensez que vos scripts vont survivre au delà de PHP 5 --> chaine[$i]

Liens:
http://fr.php.net/manual/fr/language.types.string.php
http://blog.iworks.at/?/archives/30-Tim ... d-Bye.html

curly braces = accolades

Et voici la raison expliquée par Rasmus Lerdorf himself:
Very few people converted to using {} so the argument about reading old
code doesn't really hold. If you go and grep through all the public
code out there, pretty much none of it uses {} for character offsets.
And internally there is absolutely no difference between {} and [].
Having two syntaxes for the same thing makes no sense, and getting rid
of [] would break all sorts of stuff. The original reason for the {}
was a technical one to simplify the parser, but the landscape has
changed and that reason no longer exists.

As far a code readability and obviousness goes, I doubt anybody would
guess their way to the $str{5} syntax. If you were new to PHP and you
were going to try to guess how you would get a character offset in a
string, what would your first guess be? Most non-PHP people I have
asked have answered []. Removing the obvious syntax just doesn't make
any sense. The other place {} is used outside of control blocks is in
quoted strings where "{$foo{1}}" is much uglier than "{$foo[1]}".

par Cyrano » 23 févr. 2006, 11:45

Et pourquoi ne pas utiliser preg_match() ?
<?php
$chaine1 = 'Mario';
$chaine2 = 'Cyrano';
$chaine3 = 'zorro';
$lettre1 = strtoupper($chaine1[0]); // met en MAJUSCULE le premier caractère de la chaine
$lettre2 = strtoupper($chaine2[0]); // met en MAJUSCULE le premier caractère de la chaine

function premiere_lz($chaine)
{
    $masque = "#^[L-Z]\w*\.*#";
    if(preg_match($masque, $chaine))
    {
        return true;
    }
    else
    {
        return false;
    }
}
echo("<p>");
echo((premiere_lz($chaine1)) ? "La chaine ". $chaine1 ." commence par une lettre majuscule comprise entre 'L' et 'Z';" : "La chaine ". $chaine1 ." ne commence pas par une lettre majuscule comprise entre 'L' et 'Z';");
echo("</p>\n");
echo("<p>");
echo((premiere_lz($chaine2)) ? "La chaine ". $chaine2 ." commence par une lettre majuscule comprise entre 'L' et 'Z';" : "La chaine ". $chaine2 ." ne commence pas par une lettre majuscule comprise entre 'L' et 'Z';");
echo("</p>\n");
echo("<p>");
echo((premiere_lz($chaine3)) ? "La chaine ". $chaine3 ." commence par une lettre majuscule comprise entre 'L' et 'Z';" : "La chaine ". $chaine3 ." ne commence pas par une lettre majuscule comprise entre 'L' et 'Z';");
echo("</p>\n");
?>
Ce bout de code va afficher :
La chaine Mario commence par une lettre majuscule comprise entre 'L' et 'Z';

La chaine Cyrano ne commence pas par une lettre majuscule comprise entre 'L' et 'Z';

La chaine zorro ne commence pas par une lettre majuscule comprise entre 'L' et 'Z';

par Ryle » 23 févr. 2006, 11:00

Petite question parallèle suite au edit de Mario : dans ce topic http://www.phpfrance.com/forums/voir_re ... php#102957, c'est le contraire qui est indiqué concernant les [] et les {} ...

Quelqu'un peut-il me dire qui a raison et lequel il vaut mieux utiliser ?

par mario » 22 févr. 2006, 20:11

<?php
$chaine = 'Mario';
$lettre = strtoupper($chaine[0]); // met en MAJUSCULE le premier caractère de la chaine

if ( (ord($lettre) >= 76) && (ord($lettre) <= 90) )
   echo "La 1ère lettre de ".$chaine." commence par une lettre entre L et Z";
?>
nous utilisons ici la table ASCII (La table ASCII contient 128 nombres affectés à des caractères)
de A (65) à 90 (Z).
ord -- Retourne le code ASCII d'un caractère

EDIT DE MOI MEME:
Correctif --> merci à naholyr (utilisation des {} plutot que des [] obsolètes et utilisation de ord() inutile) ...LIEN ICI

Recherche si superieur a la lettre L (ou compris entr L et Z

par bunk » 22 févr. 2006, 19:48

Bonsoir,

Je voudrais en testant une chaine (qui n'est qu'un caractere) si il est superieur ou egal a L, limite Z pour afficher le resultat d'une requete sur 2 colonnes.

voila ce que j'ai essayé mais sans résultat :
<?php
$tdtest = (ereg("[L-Z]", $artiste[0]));
?>
Auriez vous une idée ?

D'avance merci