begin process at 2012 05 27 18:31:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > SIMPLE ALGORITHME POUR RÉCUPERER UNE CHAINE DE CARACTERE DANS UNE PAGE WEB

SIMPLE ALGORITHME POUR RÉCUPERER UNE CHAINE DE CARACTERE DANS UNE PAGE WEB


 Description

Je ne contribue pas beaucoup à ce site qui m'aide et je me suis dis que ma petite fonction pourrait etre utile.
Elle consiste a recuperer une chaine, dont on ne sais rien sur elle : Seulement les balises placées avant et après.
Ca est bien pratique pour des recherches à la volée, mais il y a mieux.

Source

  • <?php
  • function localise($link,$word,$word2)
  • {
  • $handle = fopen($link, "rb"); // On ouvre la page web
  • $retour = '';
  • while (!feof($handle)) {
  • $retour .= fread($handle, 8192); // On la tampone par paquets (obligé quand c'est un flux reseau)
  • }
  • fclose($handle);
  • $retour = strstr($retour, $word); // On supprime tout ce qui est avant $word1
  • $retour = substr($retour, strlen($word)); // Y compris $word1
  • $retour = strrev($retour); // On inverse tout ! : abcdef = fedcba
  • $word2 = strrev($word2); // On inverse aussi la variable $word2
  • $retour = strstr($retour, $word2); // On enleve tout ce qui est avant à nouveau
  • $retour = substr($retour, strlen($word2)); // Y compris $word2 inversé
  • $retour = strrev($retour); // On remets à l'endroit
  • return $retour ; // Et le tour est joué !
  • }
  • $recup = localise("http://www.phpcs.com/","</span>Derniers Codes</h2>","<div class=\"C SC CO\" id=\"ctl00_Main_Tuto\">");
  • echo $recup ;
  • ?>
<?php
function localise($link,$word,$word2) 
{
		$handle = fopen($link, "rb"); // On ouvre la page web
		$retour = '';
		while (!feof($handle)) {
		  $retour .= fread($handle, 8192); // On la tampone par paquets (obligé quand c'est un flux reseau)
		}
		fclose($handle);
		
 		$retour = strstr($retour, $word); // On supprime tout ce qui est avant $word1
		$retour = substr($retour, strlen($word)); // Y compris $word1
		$retour = strrev($retour); // On inverse tout ! : abcdef = fedcba
		$word2 = strrev($word2); // On inverse aussi la variable $word2
		$retour = strstr($retour, $word2); // On enleve tout ce qui est avant à nouveau
		$retour = substr($retour, strlen($word2)); // Y compris $word2 inversé
		$retour = strrev($retour); // On remets à l'endroit
		return $retour ; // Et le tour est joué !
}

$recup = localise("http://www.phpcs.com/","</span>Derniers Codes</h2>","<div class=\"C SC CO\" id=\"ctl00_Main_Tuto\">");
echo $recup ;
?>



 Sources de la même categorie

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip Source avec une capture CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGE par Salva9473

 Sources en rapport avec celle ci

DÉCOUPAGE D'UN TEXTE EN FONCTION DES SAUTS DE LIGNES par biloubil
RÉCUPÈRE LA PLACE PERDU DANS UNE BASE DE DONNÉES MYSQL par aminecherche
Source avec Zip EXTRAIRE UNE PIÈCE JOINTE APRÈS RÉCEPTION D'EMAIL par raven44

Commentaires et avis

Commentaire de garfield90 le 10/01/2007 17:35:56

Oui, ca s'appele les expressions rationnelles (régulières)
-> preg_*
-> ereg_*

Y a plus qu'a regarder dans le manuel

Commentaire de JoebarGlut le 10/01/2007 19:20:50

Ok, c'est pas très explicite comme fonctions et dur à trouver.
Parfois faut se débrouiller comme on peut :)

Commentaire de audayls le 10/01/2007 21:51:30

Salut,
Je suis d'accord avec "Garfield90". Tu utilises beaucoup de fonctions pour pas grand chose ...

"$retour = preg_match('`'.$word.'(.+?)'.$word2.'`sim',$retour);
return $return[0];" devrait donner le même résultat (enfin normalement :-P)

Commentaire de kankrelune le 11/01/2007 16:03:03

function searchAndFind( $link, $word1, $word2 = null, $noCase = true, $findAll = false)
{
if(false === ($handle = @fopen($link, "rb")))
return false;

$datas = '';
    
while (!@feof($handle))
$datas .= @fread($handle, 8192);

@fclose($handle);

$word1 = preg_quote($word1,'~');

if(is_null($word2))
$word2 = $word1;
else
$word2 = preg_quote($word2,'~');

$option = '';

if($noCase === true)
$option = 'i';

if($findAll === false)
preg_match('~'.$word1.'(.*?)'.$word2.'~s'.$option,$datas,$matches);
else
preg_match_all('~'.$word1.'(.*?)'.$word2.'~s'.$option,$datas,$matches,PREG_SET_ORDER);

$ret = array();
if(!empty($matches))
{
if($findAll === false)
$ret[] = $matches[1];
else
{
$i = -1;

while(isset($matches[++$i]))
$ret[] = $matches[$i][1];
}
}

return $ret;
}

$find = searchAndFind('http://www.phpcs.com/','</span>Derniers Codes</h2>','<ul class="right">'));

if(empty($find))
    echo 'String not found';
        else
           echo $find[0];


@ tchaOo°

Commentaire de dominion le 11/01/2007 16:06:40

Qui n'a jamais réinventé les regexp une fois dans sa vie ? Maintenant que tu sais que ca existe déjà, Joe, je te conseille viviement d'apprendre a t'en servir, c'est d'une puissance et d'une souplesse invraissemblable ^^

Commentaire de twisteurwin le 11/01/2007 17:43:50

Salut all !
Bonne année 2007 à vous tous !
kankrelune > petite correction sur une portion de ton code, un ) de trop

$find = searchAndFind('http://www.phpcs.com/','</span>Derniers Codes</h2>','<ul class="right">');

bye

Commentaire de JoebarGlut le 11/01/2007 18:15:00

Merci pour vos commentaires :)
J'irai voir à quoi ressemble ces expression rationelles mais en attendant ma méthode me parait plus simple et plus courte :p
Mais j'avou que le fait de pouvoir mettre des options de filtre peut etre interessant dans certains cas.
Bonne année !

Commentaire de dominion le 11/01/2007 18:27:20

l'avantage des regexps, c'est que ça marche pour tout (ou presque). Tu as aussi, dans le cas du php, une nette amélioration des perfs : ton code est directement exécuté par l'interpréteur PHP, ce qui est évidemment plus rapide. Et comme tu l'as dit, les options de filtres sont très utiles !!! Le seul véritable défaut que j'ai jamais trouvé dans les regexps, c'est cette syntaxe proprement dégeulasse où finalement tu comprends plus rien (vu que les espaces pour clarifier le code ne sont pas permises...)

Commentaire de JoebarGlut le 11/01/2007 18:50:11

C'est vrai c'est burk, j'osai pas le dire.
Sur ce lien, j'ai beaucoup ris :
1er exemple, niveau facile... hummm ok.
2eme exemple, niveau facile... ok
3eme exemple, niveau difficile :
preg_match('`^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]
([-_.]?[[:alnum:]])*\.([a-z]{2,4})$`',$chaine);

On dirais mon chat quand il marche sur le clavier.

http://www.expreg.com/pregmatch.php

Commentaire de audayls le 11/01/2007 19:04:22

vas sur http://www.vulgarisation-informatique.com/expressions-regulieres.php (le site d'anthomicro) tout est expliqué ;-)

Commentaire de JoebarGlut le 11/01/2007 19:47:31

Cool le lien, il a l'air bien fait :)

J'ai testé ta fonction kankrelune, c'est vraiment bien ce tableau de match_all, encore merci à tous, bye.

Commentaire de coucou747 le 12/01/2007 13:25:25 administrateur CS

DOMINION, "Qui n'a jamais réinventé les regexp une fois dans sa vie ?", euh... personellement, j'ai souvent fait sans, mais jamais recodé un match... et je ne dois pas être le seul dans ce cas...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Comment recuperer des donner d'une page unix ? [ par gol ] Je desire recuperer les données d'une page unix pour m'en servir pour de la programmation.C'est à dire que je souhaite me servir de données d'un serve recuperer une page [ par tich69 ] comment faire pour recuperer une page web au format php3?est ce possible Comment recuperer ce qu il y a apres le ? de l url [ par pheno ] Comment recuperer ce qu il y a apres le ? de l urlvoila ma question est toute bete mais je sais pas fairealors en fait je cliques sur un lien dans ma recuperer valeur [ par Xime ] salut :)j'affiche une liste d'enregistrements dans un tableau avec tout a gauche 2 liens :un pour modifier et l'autre pour supprimer la lignevoila lor recuperer piece jointe d'un mail [ par thelivingdeadgirl ] bonjour !voila j'ai un petit probleme, je n'arrive pas a enregistrer une piece jointe sur le disque en dur mais pourtant, j'arrive a afficher son nom recuperer le contenu d'une table sur dd [ par oggy ] Salut à tous !Alors voilà, j'ai un problème depuis quelques jours que je n'arrive pas à résoudre.J'ai dans ma base de données une table avec un champ recuperer l'url de la page ou je me trouve [ par Alexnancy ] salut,comment puis-je recuperer l'url de la page ou je me trouve ??j'ai essaye $HTTP_REFERER, mais ca recupere l'url de la page ou je viens, c pas pra plusieur input dans une boucle [ par sana72 ] bonjourvoila, dans une boucle, j'ai une input et une reference $numje voudrais recuperer la valeur de l'input et le $num mais pour l'instant je ne rec recuperer resultat de php dans Word [ par bendeb ] bonjourje recherche un script qui me permette de recuperer mon résultat dans word. En fait, g un requeteur multi critères qui donne une page de résult


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales