PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » Récupérer selon la position d'un mot, les 170 caractères » 30-08-2014 18:33:14

Extra merci bien !!!
JE vais regarder tout ça et le mettre en pratique
Excellent week-end également
Yule

#2 Forum Général PHP » Récupérer selon la position d'un mot, les 170 caractères » 30-08-2014 18:33:14

yule
Réponses : 2

Re,

j'avance mais c'est de plus en plus misérable, j'aimerais selon une position précise, afficher le terme recherché avec 170 caractères qui précède ce mot et les 170 caractères qui suivent ce mot

Ce qui fonctionne et qui à l'air optimum...

$texte ="Google recherche images maps play youtube actualités gmail drive plus » historique web | paramètres | connexion × surfez encore plus vite installer google chrome suisse *
recherche avancée outils linguistiques le domaine google.ch est disponible en : deutsch english italiano rumantsch solutions publicitaires solutions..";

$keyword = "le+[color=#ff482b]domaine[/color]+de+sa+vigne";

//+ --- je récupère le premier mot avec 4 caractères minimum

$words    = array_filter(explode('+', $keyword), function($p) { return strlen($p) > 4; });
$word     = reset($words);

echo "$word<br><br>"; // $word est le premier mot de plus de 4 lettres => domaine

//Je cherche la position de ce mot de 4 caractères minimum

$pos = stripos($texte, $word); // insensible à la casse, sinon strpos
if ($pos === false) {
    echo "Le terme '$word' ne se trouve pas dans la chaîne texte";
} else {
    echo "Le terme '$word' a été trouvée dans la chaîne texte<br><br>";
    echo " Le terme '$word' débute à la position $pos <br><br>"; // position 220
}

// domaine
// Le terme 'domaine' a été trouvée dans la chaîne texte
// Le terme 'domaine' débute à la position 220

Maintenant avec ce qui précède, je dois afficher les 170 caractères précédant ce $word "domaine" et les 170 suivants pour y afficher avec une découpe sur des mots entiers

Le résultat espéré => gmail drive plus » historique web | paramètres | connexion × surfez encore plus vite installer google chrome suisse   recherche avancée outils linguistiques le domaine google.ch est disponible en : deutsch english italiano rumantsch solutions publicitaires solutions.

IMPORTANT: il faudrait également prendre en compte que s'il n'y pas de 170 caractères avant ou 170 après $word et sa position ($pos), qu'il prennent en plus du $word "domaine" les 240 caractères le précédant ou les 240 caractères suivant

J'arrive qu'à ça (pathétique..:oops:)


// afficher 170 caractère après $word
$pos=$pos-1;
$start = $pos;
$length = 170;
$result = substr ($texte, $start, $length);


echo"$result <br><br>";
//domaine google.ch est disponible en : deutsch english italiano rumantsch solutions publicitaires solutions


// Afficher 170 caractères avant $word

$decompte = strlen($word); //7
$v=$length-$décompte; // 170-7 = 163
$x2=$pos-$v;  //220-163-1 = 58 (nouvelle position..)
$start = $x2; // 58
$result2 = substr ($texte, $start, $length);
echo"$result2 <br><br>";
// ités gmail drive plus » historique web | paramètres | connexion × surfez encore plus vite installer google chrome suisse recherche avancée outils linguistiques le

echo"$result2$result <br><br>";
//ités gmail drive plus » historique web | paramètres | connexion × surfez encore plus vite installer google chrome suisse recherche avancée outils linguistiques le domaine google.ch est disponible en : deutsch english italiano rumantsch solutions publicitaires solutions

=> ités gmail drive plus » historique web | paramètres | connexion × surfez encore plus vite installer google chrome suisse recherche avancée outils linguistiques le domaine google.ch est disponible en : deutsch english italiano rumantsch solutions publicitaires solutions

Ça ne coupe pas proprement, ça ne prend pas en compte s'il y a assez de caractères avant et après $word et c'est surtout, pas du tout optimum arghhhhhh

J'essaye mais ça va pas....

A+
Yule

#3 Forum Général PHP » Travailler avec la version fr d'une url avec cURL » 09-08-2014 15:19:13

yule
Réponses : 1

Bonjour,

Je souhaite extraire les métas et le plaintext (texte html) d'une url, je coince en recherchant la version fr de l'url

Initialement j'ai

        $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
  curl_setopt($ch, CURLOPT_TIMEOUT, 15);
  curl_exec($ch);
 
  // ensuite , je fais divers manip pour récupérer la bonne url (s'il y a des redirections htaccess ou meta refresh)

// +-------- Y a t'il une redirection -------------+

  $lastUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

        if ($lastUrl != ""){
  $url = "$lastUrl";
  }
  else{
  $url ="$url";
  }

// +-------- Je vérifie s'il n'y a pas une redirection par un méta refresh... -------------+
 
  preg_match("'<meta[\s]*http-equiv[^>]*?content[\s]*=[\s]*[\"\']?\d+;[\s]*URL[\s]*=[\s]*[\"\']?([^\"\']*?)[\"\']?>'i", file_get_contents($url), $matches);
  $refresh = $matches[1];

//etc..........et j'ai  une nouvelle $url nettoyée de tout


   
    j'arrive donc à une nouvelle url, de cette nouvelle url j'aimerais donc extraire les informations que j'ai besoin, mais avant, je dois être certain
    d'être sur la version fr du site (par exemple http://instagram.com/)
   
    Avec cette adresse/url, je récupère les métas et le texte html, malheureusement en anglais et je souhaiterais les récupérer mais en français
   
    j'essaye de faire ceci
   
   


$headers = array(
    'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
    'Accept-Language: fr-FR,fr;q=0.5',
  );
 
  $url = curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 

   
   
    Et comme ce bout de code doit être faux, ma varaible $url devient vide
   
    Avez-vous une idée sur mon/mes erreur(s) ?
   
    D'avance merci
    Yule

#4 Re : Forum Général PHP » problème depuis passage sur php 5.4 (fonction /variable) » 10-07-2014 01:55:18

Re,

Ok c'est donc un peu un mystère... sur php 5.3 ok et sur php5.4 c'est pas bon...

Un indice sur quoi me tourner pour éviter de modifier mon argument href ? Rester sur du php ou partir sur du javascript ?

A+
Yule

#5 Re : Forum Général PHP » problème depuis passage sur php 5.4 (fonction /variable) » 10-07-2014 01:55:18

Hello,

Je reviens avec un exemple de code ou vous pouvez essayer directement sur votre serveur, et voir si ça vous fait la même chose pour comprendre mon soucis

A savoir:
Au passage de la souris sur les liens (affichage imonde de l'url..) et surtout que l'url ainsi, ne peux pas renvoyer sur la bonne page..

D'avance merci pour vos tests/solutions

<style type="text/css">
.highlight_word{
    background-color: pink;
}
</style>

<?php
    // les valeurs...
    $keywords ="option";
    $url ="http://www.option-culinaire.ch";  // ce site n'existe pas...;-)
    $description ="toutes les options que j'aimerais faire fonctionner, l'option binaire ou l'option de ne rien faire";
    $nomsite ="Tout savoir sur les options";

  // la fonction...
     function highlightWords2($string, $keywords)
         {
          $keywords = explode(' ', $keywords);
          foreach ($keywords as $word)
      {
        $string = str_ireplace($word, '<span class="highlight_word">'.$word.'</span>', $string);
          }
  return $string;
         }

  // couper les mots concernés...   
  $nomsite = highlightWords2(substr($nomsite, 0, 100), $keywords);
  $description = highlightWords2(substr($description, 0, 400), $keywords);
  $url = highlightWords2(substr($url, 0, 100), $keywords);
 
  // j'affiche le résultat...
  echo"
  Nomsite : <a href='$url' target='_blank'>$nomsite</a><br >
  Description : $description<br >
  Url : <a href='$url' target='_blank'>$url</a><br >";

?>

#6 Forum Général PHP » problème depuis passage sur php 5.4 (fonction /variable) » 10-07-2014 01:55:18

yule
Réponses : 4

Bonjour,

Sur mon moteur de recherche que j'essaye de mettre en place , je mets en surbrillance le terme recherché, ça fonctionne sauf sur les liens (url)

Si le mot clef recherché est présent dans l'url, il sera mis en surbrillance avec succès, par contre le lien ne devient plus cliquable correctement (il affiche tout un bordel qui ne se déclarait pas sur php5.3, hébergé chez ovh)

exemple d'un lien avec l'utilisation de cette fonction

http://www.%3Cfont%20color%3D%22/#398F48">monsite</font>.com 



<style type="text/css">
.highlight_word{
    background-color: pink;
}

</style>

<?php

// Début - Remplacer la couleur du terme recherché

function highlightWords2($string, $keyword)
{
  $keywords = explode(' ', $keyword);
  foreach ($keywords as $word) {
    $string = str_ireplace($word, '<span class="highlight_word">'.$word.'</spans>', $string);
  }
  return $string;
}

// +---------- Coupure et en couleur -------------- +
  $nomsite = highlightWords2(substr($nomsite, 0, 100), $keywords);
  $description = highlightWords2(substr($description, 0, 400), $keywords);
  $url = highlightWords2(substr($url, 0, 100), $keywords);


        echo"<p><a href='$url' target='_blank'>$nomsite</strong>  <br />
        <a href='$url' target='_blank'>$url</a><br />$description </a></p>";

?>


 
   
    D'avance merci pour votre aide
    Yule

#7 Re : Forum Général PHP » Comment Instaurer une pause avec sleep() toutes les 10 lignes » 08-11-2010 12:58:34

SAlut,

Merci pour l'astuce ! Sinon pour le timeout, je suis pas sur d'avoir compris

Ce que je comprends... le sleep(2) augment les risques de se retrouver en timeout ? mieux vaut rien mettre alors ou passer par du flush() pour vider le tampon ?

un truc du genre

$i++;
If ( ($i%10)==0) ;
ob_flush();
flush();
//sleep (2)
 
//ensuite, j'update les données sur ma bd...
 
ob_end_flush();

A+
Yule

#8 Forum Général PHP » Comment Instaurer une pause avec sleep() toutes les 10 lignes » 08-11-2010 12:58:34

yule
Réponses : 3

Bonjour,

Pour instaurer une pause de 2 secondes pour chaque ligne traitée, je fais ceci

$i++
sleep(2)

Comment faire la même chose en indiquant de faire une pause de 2 secondes toutes les 10 lignes traitées ?

j'ai trouvé cet exemple qui lui va traiter les 10 première lignes puis stopper

for ($i = 0; $i <10; $i++) {
sleep(2)
}

Mais j'ai pas trouvé d'exemple enfin si c'est possible de traiter par coup de 10 à la fois et faire une pause de 2 secondes ensuite

Ca veut dire quoi ça ?

$i++;
if (!($i%10))
sleep(2);

d'avance merci
yule

#10 Re : Forum Général PHP » Comment donner une valeur à une variable » 21-10-2010 15:50:56

Re,

Ben justement, je sais pas comment la récupérer pour lui donner une valeur

comment dire par exemple que $domain =  $result->host; ????

Cette solution ci-dessous va très bien mais elle est plus aléatoire..

$url2 = preg_replace('/^http:\/\//', '', $url);
$logos = "<img src='http://www.google.com/s2/favicons?domain=$url2' />";

Cordialement
Yule

#11 Re : Forum Général PHP » Comment donner une valeur à une variable » 21-10-2010 15:50:56

Re,

En fait j'ai plusieurs url et je souhaite à chaque fois la parser pour ne récupérer que le www.nondusite.com et pas le http://

Ensuite j'affiche le favicon du site

$domain = ""; // cette fameuse variable que j'arrive pas à récupérer..
$logos ="<img src='http://www.google.com/s2/favicons?domain=$domain' />";

Cordialement
Yule

#12 Forum Général PHP » Comment donner une valeur à une variable » 21-10-2010 15:50:56

yule
Réponses : 7

Bonsoir

Je souhaite donner une valeur à une variable parser et je sais pas comment faire

<?php
$url = "http://www.monsite.com";
$url2 = parse_url($url);
echo 'Le domaine est : <b>'.$url2['host'].'</b><br/>.'; // => www.monsite.com

// j'ai essayé de récupérer la variable .$url2['host']. ainsi mais rien ne fonctionne

$domain =  '.$url2['host'].';
$domain1 = ".$url2['host'].";
$domain2 = "$url2['host']";

?>

$domain = www.monsite.com  mais j'y arrive pas
D'avance merci
Yule

#13 Re : MySQL, PostgreSQL, etc... » Instaurer un temps de pause dans une grosse requête php/mysql » 04-10-2010 17:29:40

Hello,

J'ai un moteur de sites avec un robot qui indexe uniquement la première page des site soumis,
Tous les 5 jours, j'ai un cron qui met à jour cette première page des sites dans ma bd... j'en suis bientôt à 50'000 sites et je crains de trop surchargé tout ça...

je me suis mal exprimé avec le timeout... je voulais plus parler de la lenteur pour exécuter 25x la page de 0 à 2000 sites, de 2001 à 4000, de 4001 à 6000 etc...

Donc un cron par 2000 sites.. soit 25 crons..

Pour le moment j'y vais à coups de 2000 sites à la fois.. je souhaite trouver une manière de le faire plus simplement en imposant "du repos à la requête tout les 2000 sites " au lieu de faire un tableau en proposant de mettre à jour la première série de 2000 puis la suite etc..

Cordialement
Yule



Voili voilà

#14 Re : MySQL, PostgreSQL, etc... » Instaurer un temps de pause dans une grosse requête php/mysql » 04-10-2010 17:29:40

Et ben c'est déjà ça...
Merci pour ta réponse

Est-ce que ceci pourrait faire l'affaire...

$i++;
if (!($i%20))
flush();

J'ai trouvé ça... Ca veut bien dire => qu'il doit faire une pause après le 20ème enregistrement par exemple puis il continue ?
Ca éviterait le "timeout" ou la surcharge.. ?

Cordialement
Yule

#15 MySQL, PostgreSQL, etc... » Instaurer un temps de pause dans une grosse requête php/mysql » 04-10-2010 17:29:40

yule
Réponses : 4

Hello,

Je fais une requête spécifique tous les jours à l'aide d'un cron

De ce requête (spider/bot), j'update le résultat sur ma base de données, Mon problème est qu'à la longue, j'ai de plus en plus de requête et j'ai peur de faire "chauffer" le serveur…

Existe-il une fonction qui me permette de faire des pauses toutes les 20 requêtes histoire d'alléger un peu tout ça ?

Si vous avez une piste ou un exemple, je suis preneur

D'avance merci
Cordialement
Yule

#16 Re : Forum Général PHP » moteur de recherche qui retourne aucun résultat si plus de 1 mot clef » 03-06-2010 12:04:09

Saluti,

Euh heureusement que j'ai un peu de culture ce qui n'est pas forcément toujours le cas dans le pays voisin.... j'avais pas compris de suite...

Non  c'est Cnous.ch en Suisse.... rien à voir avec ton CROUS qui est une institution.. mon site est un moteur de recherche tout simplement et qui peut se dire cénous /c'est nous etc... et ce n'est pas l'abréviation de quelque chose..

Mais je te l'accorde pour l'orthographe... disons et comme tu les sais il y a 4 langues en Suisse... j'en sais 2,5... et c'est pas toujours évident de switcher juste... et partant du principe que je n'ai pas fréquenté ce CROUS/CNOUS je m'en sors pas mal...rire

Cordialement
Yule

#17 Re : Forum Général PHP » moteur de recherche qui retourne aucun résultat si plus de 1 mot clef » 03-06-2010 12:04:09

Hello,

Ah oui le coup du + et du | pas terrible effectivement...

Je vais zieuter tout ça merci

Pour le full Text, je l'utilise déjà sur mon moteur de recherche (http://www.cnous.ch/) depuis maintenant 5 ans, le full Text est bien pour des grosses bases de données... le gros soucis est la pertinence en mode full text qui est son point faible...

Dès que tu n'écris pas juste un terme recherché le résultat est à 0, certes tu peux y ajouter des boléans mais l'utilisateur ne s'amuse plus avec ça... le * , le - etc... et par conséquent je cherche a switcher mes résultats en full text qui ont une valeur de 0 pour passer sur du like et y afficher des résultats dit "moins pertinents" et je bute finalement sur ce qu'il y a de plus élémentaire, il est vrai que j'ai pris un code simple pour essayer de voir si mon idée pouvait être plausible et dans la précipitation j'ai pas tout analisé correctement...

A+
Yule

#18 Forum Général PHP » moteur de recherche qui retourne aucun résultat si plus de 1 mot clef » 03-06-2010 12:04:09

yule
Réponses : 5

Bonjour,

Je fait un petit moteur pour une section de mon site, il fonctionne parfaitement si je ne recherche qu'un mot clef, dès qu'il y 2 mots clefs ou plus, il me retourne 0 résultat et je ne comprends pas pourquoi

Si je cherche le terme "cinéma" c'est ok
Si je cherche le terme "bleu" c'est ok

Si maintenant je cherche le terme "cinéma bleu" => 0 résultat grrrrr...

Je dois donc faire une erreur mais je sais pas ou et comment, si vous avez la bonté de regarder le code et me dire ce que j'ai fait de faux, c'est volontiers car la je patauge.. sad

D'avance merci
Yule


<?php
error_reporting(0);
 
 // nettoyage rapide
 $keywords = isset($_GET['search']) ? $_GET['search'] : '';
 $keywords = htmlspecialchars(chop($keywords));
 $keywords = str_replace(" ","+",chop($keywords));
 
 // tous dans un tableau
 $tablo = explode ('|',$keywords);
 
 // la requête
 $requete2 = "SELECT id, titre, description FROM $tablelexique WHERE
(titre LIKE '%$keywords%' OR description LIKE '%$keywords%') ORDER BY id ASC LIMIT 0,10"
;
 $result2 = mysql_query($requete2) OR die(mysql_error().' $requete2');
 
 $i=0;
 
 while($ligne = mysql_fetch_array($result2))
 {
 $id = $ligne["id"];
 $titre = $ligne["titre"];
 $description = $ligne["description"];
 
 //sortie du tableau
 $keywords = implode('|', $tablo);
 
 // coloration du mot clef
 $motifs='`^|\b(('.$keywords.')?)\b|$`si';
 $sorties='<font color="#398F48" size="3"><b><i>$1</i></b></font>';
 $titre = preg_replace($motifs,$sorties,$titre);
 $description = preg_replace($motifs,$sorties,$description); 
 
 // affichage du résultat
 echo"<p>» <a href='$nomsite0-$rssuri.html'><b>$titre</b></a><br>   
 $description<br></p>"
;
 $i++;
 }
?>

Ps : j'avais posté ce message sur un autre forum, mais j'ai pas du le faire au bon endroit oupsss, c'est pourquoi je pense qu'ici il est plus approprié

#19 Re : Forum Général PHP » Texte en aléatoire sans jamais afficher le même » 26-02-2010 16:38:25

HEllo,

A ta libre appréciation et interprétation une nouvelle fois... cela dit, Ca solutionne aisément ce pour laquelle j'étais venu ici wink

CORDIALEMENT
Yule

#20 Re : Forum Général PHP » Texte en aléatoire sans jamais afficher le même » 26-02-2010 16:38:25

Ah non c'est tout bonnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

Merci à vous tous ;-D

Yule

#21 Re : Forum Général PHP » Texte en aléatoire sans jamais afficher le même » 26-02-2010 16:38:25

HEllo,

Euhh merci bien mais je fais comment.. je n'ai malheureusement pas vos connaissances, a vous lire ça parait logique mais à mon niveau pas trop ..mmhhh rire

J'ai fais ceci

$numbers = array($yule1, $yule2, $yule3);
shuffle($numbers);
foreach ($numbers as $number) {
    echo "$number ";
  }

Mais il l'affiche toujours dans le même ordre


YUle

#22 Forum Général PHP » Texte en aléatoire sans jamais afficher le même » 26-02-2010 16:38:25

yule
Réponses : 10

Bonjour

Je souhaiterais afficher plusieurs paragraphe dans un odre différant à chaque refresh de ma page

Actuellement, je procède ainsi ($yule... correspond à un paragraphe, précisément du texte et une image)

echo"
$yule1
$yule2
$yule3
$yule4
$yule5
";

Avec l'exemple ci-dessus, il affiche donc 5 paragraphes dans un ordre précis.., ce je que souhaiterais, c'est qu'il m'affiche toujours ces 5 paragraphes dans un ordre aléatoire sans qu'il y est des doublons dans l'aléatoire (pas que yule1 s'affiche 2x au détriment d'une autre yule..)

J'ai regardé du coté de rand () mais franchement.. je peine

D'avance merci de votre aide

Cordialement
Yule

#23 Re : MySQL, PostgreSQL, etc... » Récupérer le premier mot d'une liste de plusieurs mots » 25-01-2010 12:59:27

Hello,

Merci mais je n'avoue ne pas comprendre comment cela ne peux m'afficher et m'extraire que le premier nom de ma liste

A+
Yule

#24 MySQL, PostgreSQL, etc... » Récupérer le premier mot d'une liste de plusieurs mots » 25-01-2010 12:59:27

yule
Réponses : 4

Hello,

J'aimerais récupérer depuis ma bd et sur ce champ que le premier mot de la liste, soit "béret" et je sais pas comme faire ça j'ai regardé du coté de $string mais j'ai pas trouvé ou pas bien regardé..

$nomsite = "Béret, Bateau, montre etc...";

$nomsite = "$mcles";

$nomsite0= strtr($nomsite,"éèëêàäâùüûöôïïüûç","eeeeaaauuuooiiuuc"); // remplace les accents
$nomsite0 =  trim(preg_replace('@([^a-z|A-Z|0-9|-])+@', '-', strtolower($nomsite0)), "-"); // trim et min
$nomsite0 = preg_replace('@([-])+@', '-', $nomsite0); // - pour le uri

Ca me donne : beret-bateau-montre....
et j'aimerais uniquement ceci (1er mot) : beret

ou si
$nomsite = "L'éleve, Bateau, montre etc...";

le résultat recherche (que le premier mot) : l-eleve

D'avance merci
Yule

Pied de page des forums

Propulsé par FluxBB