[RESOLU] trouver une chaine

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 : [RESOLU] trouver une chaine

par Nerva » 15 mai 2005, 14:54

Voilà, j'ai trouvé ça et ça fonctionne...

Code : Tout sélectionner

<? echo '<a href="mailto:' . $valeurlud["email"] . '">' . $valeurlud["email"] . '</a>'; ?> <? echo '<a href="' . $valeurlud["site"] . '">' . $valeurlud["site"] . '</a>'; ?>

par Nerva » 14 mai 2005, 17:05

Bonjour.

Je suis débutant en PHP et j'aimerais bien aussi pouvoir rendre les URL et les adresses emails cliquables dans un livre d'or.

L'expression suivante, je l'ai trouvée un peu partout :

Code : Tout sélectionner

<? //rendre une URL cliquable $val = ereg_replace("(http://|ftp://)(([[:punct:]]|[[:alnum:]])*)","<a href='\\0' onclick=\"window.open(this.href,'_blank');return false;\">\\0</a>",$val); //rendre un email cliquable $val = ereg_replace("([_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+)","<a href=mailto:\\0>\\0</a>",$val); ?>
mais je ne sais absolument pas où la placer dans ma page !

Dans mon livre d'or, j'ai les champs email et site qui reçoivent les adresses ; doit-on les formater d'une manière spécifique pour que le code puisse fonctionner ? En l'état actuel, voici le formatage :

Code : Tout sélectionner

[...] <? echo $valeurlud["email"]; ?> <? echo $valeurlud["site"]; ?> [...]
Un petit coup de main serait le bienvenu...

Merci.

par Invité » 14 mai 2005, 17:04

Bonjour.

Je suis débutant en PHP et j'aimerais bien aussi pouvoir rendre les URL et les adresses emails cliquables dans un livre d'or.

L'expression suivante, je l'ai trouvée un peu partout :

Code : Tout sélectionner

<? //rendre une URL cliquable $val = ereg_replace("(http://|ftp://)(([[:punct:]]|[[:alnum:]])*)","<a href='\\0' onclick=\"window.open(this.href,'_blank');return false;\">\\0</a>",$val); //rendre un email cliquable $val = ereg_replace("([_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+)","<a href=mailto:\\0>\\0</a>",$val); ?>
mais je ne sais absolument pas où la placer dans ma page !

Dans mon livre d'or, j'ai les champs email et site qui reçoivent les adresses ; doit-on les formater d'une manière spécifique pour que le code puisse fonctionner ?
En l'état actuel, voici le formatage :

Code : Tout sélectionner

[...] <? echo $valeurlud["email"]; ?> <? echo $valeurlud["site"]; ?> [...]
Un petit coup de main serait le bienvenu...

Merci.

par greg01 » 14 mars 2005, 16:58

merci beaucoup à tous les deux ! :P

par flitox » 14 mars 2005, 16:53

http://www.expreg.com/
http://www.phpscripts-fr.net/articles/voir.php?id=158
http://www.yov408.com/articles/Regexp/A ... en_PHP.htm
http://www.siteduzero.com/php/regex1.php

Sur le dernier, tu trouveras dès le début la syntaxe pour rendre une url cliquable. (méthode plus fiable ;))
[[:alnum:]]
Tous les caractères alpha-numériques

[[:alpha:]]
Tous les caractères alphabétiques

[[:blank:]]
Tous les caractères de tabulation et espace

[[:cntrl:]]
Tous les caractères de control

[[:digit:]]
Tous les chiffres décimaux = [0-9]

[[:graph:]]
Tous les caractères imprimables sauf ‘espace’

[[:lower:]]
Tous les caractères en minuscules

[[:print:]]
Tous les caractères affichables

[[:punct:]]
Tous les signes de ponctuation

[[:space:]]
Tous les caractère d’espacement

[[:upper:]]
Tous les caractères majuscules

[[:xdigit:]]
Tous les chiffres hexadécimaux
Une adresse peut être de ce style : http://www.mon_site-perso.fr

punct va dire que l'adresse peut avoir des signes de ponctuation comme le "." et alnum va dire qu'il y a des chiffres et des lettres (logique ;))

Mais comme j'ai dis, c'est la méthode simpliste.

Essaye celle-là :

Code : Tout sélectionner

^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$

par Invité » 14 mars 2005, 16:51

Il y a toujours cette méthode malgré qu'elle soit simpliste :
<?php
//rendre une URL cliquable
$val = ereg_replace("(http://|ftp://)(([[:punct:]]|[[:alnum:]])*)","<a href='\\0' onclick="window.open(this.href,'_blank');return false;">\\0</a>",$val);	

//rendre un email cliquable
$val = ereg_replace("([_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+)","<a href=mailto:\\0>\\0</a>",$val);
?>
Voud pouvez me dire a quoi ça sert les (([[:punct:]]|[[:alnum:]])*) ?

par greg01 » 14 mars 2005, 16:49

Merci celle la je la comprends plus parce qu'avec bidule_match_all.
Si vous aviez un lien vers un cours sur ces fonctions de remplacement ce seait super cool.
Merci en tout cas !

par flitox » 14 mars 2005, 16:44

Il y a toujours cette méthode malgré qu'elle soit simpliste :
<?php
//rendre une URL cliquable
$val = ereg_replace("(http://|ftp://)(([[:punct:]]|[[:alnum:]])*)","<a href='\\0' onclick=\"window.open(this.href,'_blank');return false;\">\\0</a>",$val);	

//rendre un email cliquable
$val = ereg_replace("([_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+)","<a href=mailto:\\0>\\0</a>",$val);
?>

par pierre » 14 mars 2005, 16:40

oui tu as raison, je n'avais pas vu ton post quand j'ai fait le mien

par greg01 » 14 mars 2005, 16:40

En fait,
je génère un boucle en Php pour afficher du texte (comme des news) mais j'aimerais y inclure des liens et les repérer automatiquement.
D'ou la détection de la chaine commençant par http pour la remplacer par <a href='variable contenant la chaine détectée'>chaine détectée</a>.

par flitox » 14 mars 2005, 16:36

Le problème avec ton code Pierre c'est que ça dit que ça commence par http et la suite?

preg_match_all va récupérer toutes les occurrences commençant par http et avec une expression régulière, il n'y a qu'à récupérer la suite de l'url ;)

par pierre » 14 mars 2005, 16:21

Code : Tout sélectionner

$chaine="http://biensur.fr" if(eregi("^http",$chaine)) { echo 'la chaîne commence par http'; } else { echo 'la chaîne ne commence pas par http'; }

par flitox » 14 mars 2005, 16:19

Oui il en existe une : preg_match_all

trouver une chaine

par greg01 » 14 mars 2005, 16:13

Bonjour à tous,

j'ai un texte et j'aimerais trouver les chaines de caracteres commençant par 'http' par exemple, existe-t-il une fonction pour cela?
Merci beaucoup !!