Aller au contenu

lorik

Hubmaster
  • Compteur de contenus

    574
  • Inscrit(e) le

  • Dernière visite

Messages postés par lorik

  1. Salut Captain,

    Même problème, file s'appuie sur les \r\n pour déterminer la fin de la ligne...

    La solution, je pense, c'est supprimer tous les \r\n 'mal placés'. J'ai regardé le fichier, les bons sont en " \r\n", les mauvais en \r\n , sans les quotes.

    Le problème, c'est que les fichiers textes font 50 Mo, je vois pas trop comment faire sans faire peter le serveur : Je me vois pas mettre tout le fichier dans une variable, et lancer un str_replace dessus, encore moins une regex, même si je savais la construire...

    :(

  2. Bonjour,

    Je cale sur un problème :

    Je dois importer dans une table le contenu d'un fichier txt, ligne par ligne. Normalement, chaque ligne compte 5 'champs'.

    $fp=fopen($fichier, "r");
    while ($lecture=fgets($fp)) // récupère les ligne une par une
    {
    $tab=explode (';', $lecture); // explose les infos de la ligne
    // suite du traitement...
    }

    Bon, ça marche impec, sauf que... dans certains champs du fichier txt, j'ai parfois des \r\n qui se promènent au milieu du texte, et du coup, le fgets se met à patiner, puisque il semble qu'il utilise les caractères fins de lignes pour séparer les lignes (logique, evidement ! ).

    à votre avis, y a t il une méthode pour supprimer les \r\n à l'intérieur des champs, pas les 'vrais', ceux de fin de ligne ?

    Ou une autre façon de récupéer une ligne complète en se passant de fgets ?

    Merci de votre aide.

  3. :(, t'as raison, avec un autre css, ça marche, dans le même dossier...

    Pour les droits, là, je suis en local, et le css n'est pas en lecture seule. En plus, ce css, je l'ouvre et le manipule sans problème avec Dream, je comprends pas, là....

  4. Bonjour,

    Je cherche à ouvrir un fichier css present sur mon site, pour modifier dynamiquement son contenu.

    $target = 'pages_web/css/1-main.css'; 
    $fp=fopen($target,"r+"); // Ouverture du fichier avec le mode écriture
    $taille=filesize($target);
    $content=fread($fp, $taille);

    ça me renvoie une erreur à fread comme quoi la taille ne peux etre 0, ce qui signifie que filesize ne trouve pas la taille du fichier css.

    Et si je remplace $taille par exemple par 1000 dans mon fread, ça me renvoie aussi une page blanche, comme si mon fichier css etait vide (c'est pas le cas !!).

    Je precise, le code ci dessus marche bien pour des fichiers html ou des fichiers textes dans le même répertoire que mon fichier css, ce n'est donc pas un problème de chemin ou de nom de fichier (fopen renverrait une erreur de toutes façons).

    Est-ce qu'il y a un truc particulier pour les fichiers css ?

    Merci de vos tuyaux.

  5. c'est juste la méthode la plus simple qui m'est venue à l'esprit en écrivant ceci, à toi de le faire évoluer

    Tu veux m'ecoeurer ou quoi ? :) je vois pas ce qu'il y a de simple là dedans, quand je pense que tu me 'ponds' ça comme qui rigole, alors que j'ai mis 4 heures pour faire une REGEX... fausse ! La vie est trop injuste...

    Bon merci 1000 fois en tous cas, je vais creuser ça et suivre ta methode.

  6. Pour les CSS, je pense que mon HREF est bon au niveau methode, non ? après, effectivement, je dois tester la présence de l'extention CSS, et ça devrait le faire, je pense, quelque soit l'ordre des attributs, j'aurai toujours l'url juste après le Href, non ? j'ai jamais vu un autre cas, mais tu me mets le doute...

    non Kiob, j'aime bien apprendre moi même :) . C'est pas mon boulot de coder, c'est juste un loisir. Alors si j'attends qu'on me donne le code, ou est l'interet ? (quoique, parfois ...:D : puisque t'en parles, t'as pas le code pour trouver les <script src ... > pour les javascripts externes :P )

  7. Salut Kiob,

    le '^", si j'ai bien compris les REGEX (mais j'ai pas compris, c'est sur, sinon je serais pas là), c'est pour dire que la chaine 'href' doit etre en début de chaine dans le texte 'crawlé'.

    bref, j'ai mis çà pour que la REGEX ne me sorte pas les AHREF des liens 'classiques'.

    Resultat, je viens de tester, effectivement, ça marche sans le '^', merci. Faudra que je relise les tutoriaux, j'étais sur de mon coup pour ce point là :(

    Merci.

  8. Bonjour,

    Je découvre les REGEX, et disons le clairement, je couine :(

    Je cherche à récuperer dans le code d'une page la liste des fichiers CSS externes présents :

    define('REGEX_CSS',		 '#^href="([^>]+)/>#i'); 
    $target="http://www.site.fr";
    $contents = _AT_file_get_contents($target); // recup de contenu de la page
    if($results = preg_match_all(REGEX_LINK, $contents, $links, PREG_SET_ORDER))
    {
    Voila l foreach($links as $tmp_image){
    $match = array();
    $image_src=$tmp_image[1]; // css à traiter
    echo $count_img."css à traiter = ".$image_src."<br>";
    }
    }

    Ce code, lancé dans une page contenant 2 fichiers CSS externes, ne renvoie rien. La REGEX ne trouve pas la chaine...

    Les CSS présents dans la page, du classique...

    <link rel="stylesheet" type="text/css" href="css/main.css" />

    <link rel="stylesheet" type="text/css" href="css/maino.css" />

    Un p'tit coup de main SVP ?

  9. Bonjour,

    Je cherche la methode pour recuperer sur mon serveur une image distante dont je connais l'url.

    J'ai essayé :

    $img=file_get_contents($img_dist);
    $taille=filesize($img);
    $img_fichier=fread($img,$taille);

    touch($nom_fichier); // crée le fichier s'il n'existe pas
    $fp=fopen($nom_fichier ,"wb"); // Ouverture du fichier avec le mode écriture

    // ecrit le code dans le fichier
    fwrite($fp, $img_fichier);

    Mais manifestement, la première partie du script ne lit pas l'image, donc le fichier crée sur le serveur est vide...

    il doit y avoir une astuce pour les images, parce qu'avec une fichier txt ou une page html, ça nepose pas de problème...

    Merci de votre aide.

  10. Bon, comme d'ab, je me tire une balle dans le pied... :(

    Dans les urls, c'est pas des \, c'est des / :wub:

    par contre, au final, c'est pas mieux :

    		 $page="http://www.site.fr/strategie/prestations.php";
    $page=parse_url($page);
    $chemin=$page['path']; // $chemin renvoie /strategie/prestations.php
    $string=explode ($chemin, "/");
    echo "bla= ".$string[0]."<br>";// donne bla= / -->je dis bien un slash
    echo "bla= ".$string[1]."<br>"; // $string[1] est vide

    C'est bizarre, normalement, je devrais avoir les contenus des urls, pas le séparateur, non ?

  11. Salut Dan,

    L'idée m'avait effleuré :) . J'avais essayé avec un :

    				   $page="http://www.site.fr/strategie/prestations.php";
    $page=parse_url($page);
    $chemin=$page['path']; // $chemin renvoie /strategie/prestations.php
    $string=explode ($chemin, "\\");
    echo "bla= ".$string[0]."<br>";// donne bla= / -->je dis bien un slash, pas un antislash
    echo "bla= ".$string[1]."<br>"; // $string[1] est vide

    Même chose avec un str_replace avec \\... ça ne trouve pas la chaine.

    j'ai pas l'impression que ça soit la solution...

  12. Bonjour,

    Un truc très C... :

    Je cherche à savoir la position du dernier '\' dans une url, pour récuperer le nom de la page. Simple, quoi ?

    Probléme, quelle que soit la fonction php que j'utilise (strrpos, explode, etc...),

    $string=explode ($chemin, "\");

    systématiquement, mon editeur de code considère qu'il manque une cote dans la ligne... du coup, pas moyen d'utiliser ce caractère, c'est fou ça !

    Je pense qu'il doit y avoir une astcue, mais je vois pas laquelle

    Merci de vos lumières :)

  13. Bonjour,

    Pour mon outil de tracking, j'ai besoin de récuperer les liens présents dans une page HTML.

    Pas de problème pour récuperer le code de la page, mais après, existe t il une fonction ou un bibliothèque qui me permette d'identifier les liens présents dans la page, sans avoir à rechercher tous les 'http/....' et les traiter ?

    Il y a une fonction PHP pur récuperer les métas, peut etre y en a til une aussi pour récuperer d'autres éléments...

    J'ai cherché dans la doc Php, sans succès, mais bon, si quelqu'un à une solution, ça m'arrangerais bien.

    Merci de votre aide

  14. JE SUIS LE ROI DES C.... !!!!!

    Le test que j'ai fait sur un serveur à Off appellait un fichier php, que j'avais justement protégé contre ce type d'appel !!!

    Rhaaa, je me hais....

  15. Ha ???

    Je suis définitivement une buse, alors ?? Je pensais que c'etait le serveur distant qui autorisait ou pas le Fopen de ses fichiers...

    C'est bizarre, mon serveur est à on, donc copy... devrait marcher sur TOUS les sites distants, alors ?

    Et c'est pas le cas : J'ai fait le test sur un serveur à Off, et j'ai bien un message dans le fichier récupéré, qui me dit 'vous n'avez pas accès....". pourtant, le pdf testé etait téléchargeable sans restriction, via une simple url classique affichée sur le site.

    On repart à zero, alors ?

    Je recapitule :

    - Sur mon serveur, je peux avoir la config que je veux, sans restriction (hein Dan, hein ??). Aujourd'hui, je suis à On pour allow_url_fopen.

    - Je veux pouvoir récuperer les pdf sur tous les serveurs, sur des sites pour lesquel l'accès aux pdf n'est pas protégé (ces pdf sont en libre accès, il n'y a aucun piratage, tout se passe très 'proprement' vis à vis du propriétaire distant).

    Quid :(

  16. Curl, pour l'utiliser, il suffit qu'il soit sur... MON serveur :), pas besoin qu'il soit sur le serveur distant (cible). Et grace à ce bon Dan, si je veux Curl, bah je l'ai :).

    file_get_contents, c'etait juste pour récuperer le contenu du pdf, pour les tests. Après, comme je disais, si le serveur distant accepte url_fopen, ta methode 'copy...' est effectivement plus rapide.

    Et mon exemple avec curl, ça sera donc :

    /*
    Script Curl à développer pour recupérer le pdf et le mettre dans une variable, disons $contenu.
    */
    $nomDuFichierLocal='CD15/test.pdf';
    file_put_contents( $nomDuFichierLocal, $contenu );

  17. Vi, je suis d'accord, mais comme je dois faire un truc qui passera partout, ça sera forcement avec Curl.

    Mais tu as raison, avec un serveur distant url_fopen à on, ta solution est la plus simple.

  18. Bon, je suis définitivement un génie :whistling:

    $contenu = file_get_contents('http://www.monsite.com/monpdf.pdf');
    $nomDuFichierLocal='CD15/test.pdf';
    file_put_contents( $nomDuFichierLocal, $contenu );

    ça marche du tonnerre de Dieu !

    J'ai plus qu'a greffer mon bout de Curl, et ça va rouler quelle que soit la config serveur.

    Merci à tous pour votre coup de main.

  19. Merci de vos encouragements, :P

    Ma doc, c'est la Bible php, et ils utilisent readfile pour donner la taille du fichier.... :( mais je pense que oui, j'ai pataugé, là....

    En fait, je suis pas du tout développeur, simplement, coder, ça me detend, mais j'ai aucune base technique. Et helas, la construction objet du php5 m'est totalement obscure...

    Heureusement, ya plein de gars sympas sur ce forum pour me confirmer que je suis une moule, ... et me remettre dans le droit chemin :P

    Bon, je reteste tout ça...

  20. Bjr,

    Merci de toutes ces infos, j'avance bien, du coup :

    - Curl pour récupérer les fichiers, et les mettre en variable.

    - file_put_content pour créer le fichier (je connaissais pas cette fonction, elle n'existe pas en php4 manifestement.)

    Pour le curl, je pense que je vais m'en sortir, par contre, pour file_put_content, ça ne marche pas pour moi :

    J'ai toujours ma bouillie à l'ecran ;), le fichier pdf (test.pdf) est bien crée, avec du contenu dedans, mais... acrobat ne sait pas l'ouvrir, il considère le fichier comme endommagé. Par ailleurs, par exemple, mon fichier pdf initial fait 72 Ko et le test.pdf résultant n'en fait que 10, donc il y a un pb quelque part...

    $test=fopen("http://www.site.com/monpdf.pdf","r");
    $taille=readfile("http://www.site.com/monpdf.pdf");
    $contenu=fread($test, $taille);
    $nomDuFichierLocal='CD15/test.pdf';
    file_put_contents( $nomDuFichierLocal, $contenu );

    Je precise, j'ai bien un serveur en php5, j'ai testé en php4, et la fonction n'est pas reconnue....

×
×
  • Créer...