Vous n'êtes pas identifié(e).
Extra merci bien !!!
JE vais regarder tout ça et le mettre en pratique
Excellent week-end également
Yule
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...
$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:)
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
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
// +-------- 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
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
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
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
<?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 >";
?>
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>
<?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
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
A+
Yule
Bonjour,
Pour instaurer une pause de 2 secondes pour chaque ligne traitée, je fais ceci
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
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 ?
d'avance merci
yule
Exact, Merci !
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..
Cordialement
Yule
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
Cordialement
Yule
Bonsoir
Je souhaite donner une valeur à une variable parser et je sais pas comment faire
// 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
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à
Et ben c'est déjà ça...
Merci pour ta réponse
Est-ce que ceci pourrait faire l'affaire...
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
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
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
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
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..
D'avance merci
Yule
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é
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
CORDIALEMENT
Yule
Ah non c'est tout bonnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
Merci à vous tous ;-D
Yule
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
Mais il l'affiche toujours dans le même ordre
YUle
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)
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
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
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...";
$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
Ok merci c'est tout bon, j'ai compris...
Merci bien
Yule