Modifier un fichier (Html) ...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Modifier un fichier (Html) ...

par Pierre Paul » 02 avr. 2005, 20:50

Ripat,
Je te remercie pour ton code.
C'est exactement ce que je recherchais

Merci
Bonne soirée à vous tous
Jacques.

par Ripat » 02 avr. 2005, 18:37

Si aucune de tes balises ne contient de ALT, ceci devrait convenir, sinon il y aura un petit aménagement de code à faire.
$source=<<<TXT
texte<img src="image1.png" class="class1" /> texte texte <img id="id2" src='image2.png' /> texte texte <img src="image3.png" />
TXT
;

$texte[1]="Blabla";
$texte[2]="Bloblo";
$texte[3]="Blibli";

// si tu veux le même alt, choisi au hasard, dans chaque <img />
$i = rand(1, count($texte));

$nouveau_texte = preg_replace("#(<img.*?)(src=[^>]*)#si", "$1 alt=\"$texte[$i]\" $2", $source);
echo htmlentities($nouveau_texte),'<br />';

// si tu veux un alt différent dans chaque <img />
function mon_remplace_alt($captures){
  global $texte;
  $i = rand(1, count($texte));
  $alt = ' alt="'.$texte[$i].'"';
  return $captures[1].$alt.$captures[2];
}

$nouveau_texte = preg_replace_callback("#(<img.*?)(src=[^>]*)#si", "mon_remplace_alt", $source);
echo htmlentities($nouveau_texte);

par Pierre Paul » 02 avr. 2005, 12:59

flitox,

Je n'avais pas vu ta réponse avant de poster mon nouveau "post".

Oui tu avais raison.

J'ai résolu ce probleme... mais comme tu peux le voir, sur mon nouveau poste, j'ai un autre problème.

Merci pour tout

Jacques

par flitox » 02 avr. 2005, 12:52

Dans ton compteur tu modifies un fichier texte alors que là tu veux modifier un fichier html et malheureusement je crains que ça ne soit pas possible sauf information contraire.

par Pierre Paul » 02 avr. 2005, 11:37

:(

Je n'y arrive toujours pas !

D'un côté j'arrive à modifier ma balise IMG

Avec le code de flitox :

Code : Tout sélectionner

<?php $source = @file_get_contents("monfichier.html"); $texte[1]="Blabla"; $texte[2]="Bloblo"; $texte[3]="Blibli"; srand((double)microtime()*1000000); $i=floor(rand(1,count($texte))); $nouveau_texte = preg_replace("!<img src='(.*?)' alt='(.?*)'!i","<img src='\\1' alt='".$texte[$i]."'",$source); echo $nouveau_texte; ?>
Ca affiche bien à l'écran les modifs (mais ne modifie pas le fichier)

Et d'un autre j'arrive bien a modifier un fichier grâce à un script de "compteur" trouver sur Internet :

Code : Tout sélectionner

// Instruction 1 $fp = fopen ("compteur.txt", "r+"); // Instruction 2 $nb_visites = fgets ($fp, 11); // Instruction 3 $nb_visites = $nb_visites + 1; // Instruction 4 fseek ($fp, 0); // Instruction 5 fputs ($fp, $nb_visites); // Instrcution 6 fclose ($fp); // Instrcution 7 echo 'Ce site compte '.$nb_visites.' visiteurs !';
Mais il ne change que le début du fichier...
J'ai tout essayé pour arriver à les réunir ...

Pourriez vous me donner un coup de main SVP !

Jacques.

par Pierre Paul » 01 avr. 2005, 13:18

Bon j'ai trouvé l'erreur...

En faite le SRC etait entouré de double quote " et non pas de simple quote '

Comment puis je faire pour enregistrer dans ce même fichier les modifs ?

par Pierre Paul » 01 avr. 2005, 13:08

J'ai essayé le code ... mais cela ne semble pas fonctionner ?

J'ai utilisé le code suivant :

Code : Tout sélectionner

$nouveau_texte = preg_replace("!<img src='(.*?)'!i","<img src='\\1' alt='".$texte[$i]."'",$source);
Il affiche bien la page, avec toutes les images... mais en regardant le sources du document... les ALT n'apparaissent pas ?

J'ai oublié quelque chose ?

par Pierre Paul » 01 avr. 2005, 12:53

En faite, après mure reflexion, il me semble qu'il serait mieux de pouvoir ajouter dans toutes les balises <IMG> mon fameux ALT.

Et ce juste après le SRC, car il peut y avoir d'autres attibuts après qu'il faut garder :
BORDER, WIDTH, HEIGHT, ... etc

Donc dire, en gros, apres chaque attribut SRC ajouter l'attribut ALT en laissant le reste.

J'aimerai le faire sur tous les fichiers HTML dans un repertoire.

par flitox » 01 avr. 2005, 12:53

Oui bien sûr

par Pierre Paul » 01 avr. 2005, 12:46

Merci flitox

Juste une petite chose

Le alt n'y est pas a l'origine... Donc je peux faire ceci ?

Code : Tout sélectionner

$nouveau_texte = preg_replace("!<img src='(.*?)' !i","<img src='\\1' alt='".$texte[$i]."'",$source);
Merci !

par flitox » 01 avr. 2005, 12:43

sur un fichier HTML ça donnerait ça :
<?php
$source = @file_get_contents("monfichier.html");
$texte[1]="Blabla";
$texte[2]="Bloblo";
$texte[3]="Blibli";

srand((double)microtime()*1000000);
$i=floor(rand(1,count($texte)));

$nouveau_texte = preg_replace("!<img src='(.*?)' alt='(.?*)'!i","<img src='\\1' alt='".$texte[$i]."'",$source);

echo $nouveau_texte;
?>

par Pierre Paul » 01 avr. 2005, 12:41

Merci a vous deux pour les infos supplémentaires.

flitox, je vais essayer avec le code que tu as donné.

Comment le faire sur un série de fichier (HTML) dans un répertoire ?
Et en automatique ?

Merci en tout cas cela m'avance beaucoup

Jacques.

par flitox » 01 avr. 2005, 10:11

Avec une expression régulière et l'exemple d'Imbroglio ça pourrait donner ça :
<?php
$texte[1]="Blabla";
$texte[2]="Bloblo";
$texte[3]="Blibli";

srand((double)microtime()*1000000);
$i=floor(rand(1,count($texte)));

$nouveau_texte = preg_replace("!<img src='(.*?)' alt='(.?*)'!i","<img src='\\1' alt='".$texte[$i]."'",$texte_d_origine);

echo $nouveau_texte;
?>

par ImBrOgLiO » 01 avr. 2005, 03:42

La bible des expressions régulières...au cas où...
http://www.expreg.com/

par Pierre Paul » 01 avr. 2005, 02:03

Merci
Ca fonctionne... :)

Je ne connais pas toutes les fonctions utilisées...mais je vais rechercher sur "www.php.net" pour cela.

Bon il faut que je trouve le moyen d'ajouter ces "alt", dans chaque Balise "IMG" :?

Merci et bonne fin de nuit

Jacques.