Cooling-Masters
Connexion · INSCRIPTION · Site Recevoir à nouveau l'e-mail de validation


php mysql

Ajouter ou retirer ce sujet de vos favoris  ·  Suivre ce sujet  ·  Imprimer ce sujet
Pages : « Première ...  13  14  15  16  17  18  19 
Vincent


troubleshooting expert :/
Messages : 7306

jeudi 12 juillet 2007 à 22:32:31     
cela doit être un paddin & margin doit doit faire sa chieuse
Google




     
Vincent


troubleshooting expert :/
Messages : 7306

jeudi 04 octobre 2007 à 22:01:24     
CODE :


<?php

$file = './fdh191.html';

if(is_file($file)) {
 $f = file($file);
 
 $tab = '';

 foreach($f as $l => $chaine) {
  // renvoie une chaine en minuscules
  $chaine = strtolower($chaine);

  //supprimes les tags HTML et XML
  $chaine = preg_replace('/<[^>]+>/',' ',$chaine);

  //supprimes les mots entre []
  $chaine = preg_replace('/\[[^>]+\]/',' ',$chaine);
 
  //suppression des caracteres bizarres
  $chaine = preg_replace('/É+/','é' ,$chaine);

  // traitement de la ponctuation
 
  //suppression des .
  $chaine = preg_replace('/\.+/','' ,$chaine);
  //suppression des !
  $chaine = preg_replace('/\!/',' ' ,$chaine);
  //suppression des ?
  $chaine = preg_replace('/\?/',' ' ,$chaine);
  //suppression des :
  $chaine = preg_replace('/\:/',' ' ,$chaine);
  //suppression des ,
  $chaine = preg_replace('/\,/',' ' ,$chaine);
  //suppression des (
  $chaine = preg_replace('/\(/',' ' ,$chaine);
  //suppression des )
  $chaine = preg_replace('/\)/',' ' ,$chaine);
  //suppression des '
  $chaine = preg_replace('/\'/',' ' ,$chaine);
  //suppression des  «
  $chaine = preg_replace('/«/',' ' ,$chaine);
  //suppression des »
  $chaine = preg_replace('/»/',' ' ,$chaine);  

  // fin du traitement de la ponctuation

  //suppression des espaces insecables
  $insec = chr(160);
  $chaine = preg_replace("/$insec/",' ' ,$chaine);

  //suppression des expression chiffrees
  $chaine = preg_replace("/([0-9]+)(\-?)([0-9]+)/",' ' ,$chaine);

  // on scinde en tableaux de mots
  $chaine = preg_split('/[\s]+/',$chaine);
//  print_r($chaine);

  foreach($chaine as $c) {
   if(strlen($c) > 3) {
    //echo $c,'<br />';
    $tab[] = $c;
   }
  }
 

 }

 $tab = array_unique($tab);
 sort($tab);
 
 $maxord = 0;
 
 foreach($tab as $t) {
  echo $t;
  //echo ' - ';
  for($i=0;$i<=strlen($t);$i++) {
   $ord = ord($t[$i]);
   //echo $ord,'/';
   if ($maxord < $ord) $maxord = $ord;

  }

  echo "<br />\n";
 }


}

?>



la classe ponctuation ne marchant pas j'ai dû faire comme cela, une autre idée debugger? c'est chiant j'ai plein de merde à cause de la non utilisation d'UTF8... demain je dois me taper tous les chr(xxx) possible...

Message édité par Vincent le jeudi 04 octobre 2007 à 22:03:58
Rosco


Administrateur
Messages : 25926

jeudi 04 octobre 2007 à 22:14:44     
Au lieu de faire 50 appels à preg_replace, tu mets tous tes masques dans une array, tes remplacements dans une autre array, et tu appelles 1 seule fois preg_replace avec les 2 arrays, c'est + rapide et moins gourmand.

Et puis pour remplacer de simples caractères, tu peux tout faire en 1 fois avec une regexp en OU, ou le faire via un str_replace et 2 arrays, c'est + rapide pour ces opérations basiques. Preg_replace est à utiliser principalement avec des regexp ou des masques, c'est + lourd pour des remplacements tous bêtes.
Vincent


troubleshooting expert :/
Messages : 7306

jeudi 04 octobre 2007 à 22:24:30     
bof les perfs, le traitement est fait une seule fois par document donc je prefere opter pour un code bien lisible surtout que c'est la premiere fois que j'utilise les PCRE

remplacer les regexp en OU?

Message édité par Vincent le jeudi 04 octobre 2007 à 22:25:31
Rosco


Administrateur
Messages : 25926

jeudi 04 octobre 2007 à 22:43:21     
oui, un motif du genre (A|B|C), A ou B ou C. Mais autant passer par une array, c'est un peu + joli.
Shinuza


Mais bof quoi
Messages : 4419

vendredi 05 octobre 2007 à 00:16:14     
QUOTE (Rosco @ jeudi 04 octobre 2007 à 22:14:44) :

Au lieu de faire 50 appels à preg_replace, tu mets tous tes masques dans une array, tes remplacements dans une autre array, et tu appelles 1 seule fois preg_replace avec les 2 arrays, c'est + rapide et moins gourmand.

Et puis pour remplacer de simples caractères, tu peux tout faire en 1 fois avec une regexp en OU, ou le faire via un str_replace et 2 arrays, c'est + rapide pour ces opérations basiques. Preg_replace est à utiliser principalement avec des regexp ou des masques, c'est + lourd pour des remplacements tous bêtes.



Edit : Et n'oublie pas les flags dans ta Regexp (je sais pas comment c'est géré en php)

Message édité par Shinuza le vendredi 05 octobre 2007 à 00:17:53
debugger


Membre
Messages : 2002

vendredi 05 octobre 2007 à 06:02:27     
je trouve que tout avoir dans le masque est plus lisible, plus simple (et moins gourmand ?) que passer par un array

une alternative au OU est une classe (plus concis)
ex : [.!?:,()'«»] au lieu de (.|!|?|,|(|)|'|«|»)
xalis


Membre
Messages : 9791

vendredi 05 octobre 2007 à 06:38:25     
Pour ton problème de non utilisation de l'utf-8, pourquoi tu n'encodes pas le buffer en utf-8 directement ?

Ça fait juste une fonction et hop in the pocket.
Vincent


troubleshooting expert :/
Messages : 7306

vendredi 05 octobre 2007 à 10:32:41     
est-ce que l'un de vous a une idee de script PHP pour convertir un PDF en txt?
debugger


Membre
Messages : 2002

vendredi 05 octobre 2007 à 12:41:37     
tu veux utiliser des fonctions déjà toutes faites ? j'en connais pas
mais si tu te sens d'attaque pour apprendre comment est fait un pdf, tu peux faire tes propres fonctions

j'ai utilisé la classe fpdf pour générer des pdf complets texte+graphique, et j'ai un peu regardé le code des fonctions pour comprendre comment ça marche, et d'après ce que j'ai compris les pdf sont une suite de codes fonction + arguments (ex : tracer un trait de 0,0 à 50,100) avec des parties binaires pour les images
=> tu regardes comment font ces fonctions, et tu fais l'inverse pour extraire ce que tu veux de n'importe quel pdf
Cooling


Membre
Messages : 327

vendredi 05 octobre 2007 à 12:41:38     
Si tu peux utiliser les appels systèmes, utilise pdftotext (sous linux)
Vincent


troubleshooting expert :/
Messages : 7306

vendredi 05 octobre 2007 à 12:43:55     
merci, c'est bien cette solution que je suis en train de tester : PDF2TXT issu du paquet XPDF

Message édité par Vincent le vendredi 05 octobre 2007 à 12:44:07
AleiZ


Membre
Messages : 3700

dimanche 02 décembre 2007 à 23:48:52     
Je voulais forcer le téléchargement d'un fichier texte. En gros, j'avais:
http://www.monsite.fr/fichier.txt à faire télécharger à l'utilisateur. Le problème c'est que par défaut le navigateur l'affiche seulement.

Donc j'ai vu qu'avec les header on pouvait faire un fichier php qui contient:
CODE :

<?
header("Content-disposition:filename=fichier.txt");
header("Content-type:application/octetstream");
?>


Effectivement ça force le téléchargement du fichier: mais il est vide au final. Donc selon moi c'est qu'il trouve pas fichier.txt.
fichier.txt et la page contenant ce code sont dans le même dossier.

Vous savez ce qui cloche ?



Message édité par AleiZ le dimanche 02 décembre 2007 à 23:49:15
Rosco


Administrateur
Messages : 25926

dimanche 02 décembre 2007 à 23:52:32     
header("Content-Disposition: attachment; filename=fichier.txt")
non ?

Tu fais un readfile ensuite pour l'envoyer ? L'est dans un buffer ?
AleiZ


Membre
Messages : 3700

lundi 03 décembre 2007 à 00:03:49     
en fait je fais rien du tout, dans le fichier php, y'a seulement que ce que j'ai mis.
Sur le serveur, y'a /www/code.php et /www/fichier.txt
J'ai rien fait d'autre: j'ai suivi comme un con un truc que j'ai lu sur le net.

Je suis sensé faire un fopen ect ??

J'accepte n'importe quelle solution permettant de forcer le download de fichier.txt au lieu de l'afficher. C'est peut être pas la meilleure solution celle-là.

EDIT: ça rulezz avec le fait readfile. beaucoup.

Ouais donc en fait c'était pas un chemin mais un fichier du buffer qu'il fallait lui filer après filename ?

Sinon j'ai changé:
header("Content-type:application/octetstream");
Pour:
header("Content-Type: application/force-download");
C'est plus "clean", non ?

Enfin déjà ça marche.

Message édité par AleiZ le lundi 03 décembre 2007 à 00:07:43
Rosco


Administrateur
Messages : 25926

lundi 03 décembre 2007 à 00:08:39     
Ah bin oui mais c'est normal alors, t'envoies rien du tout là d'où le résultat vide. Faut lire le fichier .txt après avoir envoyer les entêtes. Les headers ne font aucune action réelle, il prépare juste le navigateur pour l'action à venir.

Mets un readfile(fichier.txt) en dessous et ça ira.
AleiZ


Membre
Messages : 3700

lundi 03 décembre 2007 à 00:11:21     
ouais là en gros il fout le contenu en buffer et il me régénère le fichier txt ? (enfin .m dans mon cas)

J'ai pas du choisir la meilleure solution alors. M'enfin j'ai pas que ça à faire
Rosco


Administrateur
Messages : 25926

lundi 03 décembre 2007 à 00:12:14     
octet-stream c'est pour les .exe normalement (mais ça marche pour d'autres aussi), force-download c'est le truc par défaut. Chaque extension a son entête prédéfinie, faut préciser quand tu le peux pour le navigateur.

Y met rien en buffer dans ton exemple, il envoie ce qu'il lit directement (ça passe peut-être par un buffer, mais c'est indirect et tu le manipules pas). Tu aurais pu lire le contenu avant (ou seulement une fraction avec un file_get_contents par ex), le mettre dans un buffer et vider ce buffer pour l'envoyer au navigo, c'est pareil (mais ça bouffera sûrement + de RAM si ton fichier est gros, c'est pas utile de le "précharger")

Message édité par Rosco le lundi 03 décembre 2007 à 00:20:36
AleiZ


Membre
Messages : 3700

lundi 03 décembre 2007 à 00:18:21     
je confonds la lecture de fichier en C et en php...

Bref quelqu'un sous IE peut me tester ce lien (la flemme de rebooter ou d'installer IE sous linux): http://merci.fr et voir si ça fonctionnne ?
(ce lien s'auto-détruira dans 2 min)

EDIT:

Message édité par AleiZ le lundi 03 décembre 2007 à 00:21:29
Rosco


Administrateur
Messages : 25926

lundi 03 décembre 2007 à 00:18:59     
Ca roule chez moi, je sais le lire, etc.
AleiZ


Membre
Messages : 3700

lundi 03 décembre 2007 à 17:57:05     
C'est pas plus mal cette solution avec le fichier php comme ça j'ai pu facilement ajouter une notification par email (avec IP: donc le 1er français qui a vu le lien et qui télécharge je le verrai ) pour voir si le fichier est bien lu.
PeGGaaSuSS


Underachiever In Chief
Messages : 1866

lundi 03 décembre 2007 à 20:46:56     

Pourquoi on peut pas quoter un quote ?

Dans le topic funk, j'ai essayer de quoter Zytra, qui avait un quote dans son post, et j'avait que ce qui était hors du premier quote ?
xalis


Membre
Messages : 9791

lundi 03 décembre 2007 à 20:53:28     
parce que rosco il sait pas imbriquer les quote

mais on peut feinter :

QUOTE :

QUOTE  :

QUOTE  :

QUOTE  :

QUOTE  :

quote 1
quote 2
quote 3
quote 4
quote 5



d'où la blague : quote quote quoted
Tyrou


★ Jet Lag Addict ★
Messages : 21926

lundi 03 décembre 2007 à 21:31:23     
QUOTE (benoît @ lundi 03 décembre 2007 à 19:53:28) :

d'où la blague : quote quote quoted

quoted
Zytrahus


:ouch:
Messages : 20040

lundi 03 décembre 2007 à 21:44:20     
les lundi sont rarement si rigolo
Google




     
Pages : « Première ...  13  14  15  16  17  18  19