Connexion
·
INSCRIPTION
·
Site
Recevoir à nouveau l'e-mail de validation
Forum Cooling-Masters
>
Software
>
Programmation
php mysql
Ajouter ou retirer ce sujet de vos favoris
·
Suivre ce sujet
·
Imprimer ce sujet
Bas de page
Pages :
« Première
...
13
14
15
16
17
18
19
Page précédente
Page suivante
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
Haut de page
Pages :
« Première
...
13
14
15
16
17
18
19
Page précédente
Page suivante
Forum Cooling-Masters
>
Software
>
Programmation
Page générée en 0.016 secondes