$regex

MegaSmax Messages postés 21 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 22 avril 2006 - 30 janv. 2006 à 20:20
MegaSmax Messages postés 21 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 22 avril 2006 - 31 janv. 2006 à 21:37
Bonsoir,
je voudrais ameliorer une partie de mon script. Je voudrais write dans fichier txt une url qui apparait sur un chan.
Jai trouvé ca sur scriptsdb
; Cet ident vous retournera soit :
; - le nom d'url citée(s)
; - $true/$false si il y a une url ou pas
; - la Nème adresse citée
;Utilisation :
; $curl(blah http://www.ScriptsDB.org c'est super!).state -> retournera $true/$false si il y a une url ou pas
; $curl(blah http://www.ScriptsDB.org c'est super!).nbr -> retournera le nombre total d'url
; $curl(blah http://www.ScriptsDB.org c'est super!,N) -> retournera la Nème url, 0 vous donnera le nombre total d'url
alias curl {
  if ($isid) {
    if ((http:// !isin $strip($1-)) && (www. !isin $strip($1-)) && ($prop == state)) { return $ $+ false }
    var %u = /((?:http://|www\.)[-a-z_0-9]+\.\S+)/ig
    if ($regex($strip($1-),%u)) {
      if ($prop == nbr) { return $regml(0) }
      elseif ($prop == state) { return $iif($regml(0),$ $+ true,$ $+ false) }
      else { return $regml($2) }
    }
  }
  else { echo -st $+($,curl) invalid format! }
}

Je voudrais utiliser ce regex la pour mon script, j'ai fait ceci:
on $*:TEXT:/(www|http)/:#:{
  var %u = /((?:http://|www\.)[-a-z_0-9]+\.\S+)/ig
  if ($regex($strip($1-),%u)) {
    write -il1 url.txt $regml($1-)
  }
}

Mais la il me write "1" lorsqu'il y a une url d'afficher. Je comprend pas grand chose au $regex $regml si quelqu'un voit comment write l'url et faire une boucle si par exemple il y avait plusieurs urls dans une meme phrase.
Merci d'avance. :)

2 réponses

fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
30 janv. 2006 à 21:12
$regml(0) te retourne ne nombre de résultats trouvés
$regml(1) te retoune le premier résultat trouvé
en gros si ta condition if ($regex(blabla)) est vrai alors $regml vaut au moins 1
ensuite il faut que tu parcours les résultats ( de 1 a $regml(0) ) pour récuperer les adresses qui ont été matchées dans ton text
0
MegaSmax Messages postés 21 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 22 avril 2006
31 janv. 2006 à 21:37
Merci tout marche maitenant:
on $*:TEXT:/(www|http)/:#:{
var %url = /((?:http://|www\.)[-a-z_0-9]+\.\S+)/ig
if ($regex($strip($1-),%url)) {
var %reg = $regml(0)
while (%reg > 0) {
if (!$read(url.txt,w,$regml(%reg))) {
write -il1 url.txt $regml(%reg)
}
dec %reg
}
if ($dialog(mini)) { loadbuf 1-4 -ro mini 12 url.txt }
}
}
Voila le code au complet, c'est un URL Logger:
http://www.ircfr.com/code.aspx?ID=35626
0
Rejoignez-nous