str_replace veut pas remplacer :'(

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 : str_replace veut pas remplacer :'(

par amalgame » 16 mars 2007, 11:14

Non mais c'est pas vrai... je suis débile.

j'ai trouvé pourquoi ça marchait pas. :shock: Image :oops: :cry: Image Image

$extrait = (substr($tpl_file_html, $pos_debut_extrait,$pos_fin_extrait-$pos_debut_extrait)."\n\n");

ImageJ'ai appris quelquechose aujourd'hui les mecs,
c'est pas grave si on est con parceque si on cherche bien,
avec le temps on finit toujours par trouver pourquoi.

par amalgame » 15 mars 2007, 21:43

Ah mince, désolé ! ^^

j'ai du lire un peu trop vite!
Bienvenue dans le monde des développeurs professionnels
Mais heu !!! :oops:

par titerm » 15 mars 2007, 20:26

Bah je t'ai montré une différence... Y a un newline en plus dans un cas...

Ca pourrai etre du par exemple a une convertion des fins de lignes ...

par zeus » 15 mars 2007, 18:34

Oueh, en fait si j'avais coder de manière un peu plus pro dès le dépard, j'aurais foutu des conditions dans chaque fonction pour le débugage... :oops:

J'aurais certainement au final moins perdu de temps.

note pour plutard : toujours partir du principe que ça peut ne pas marcher.
Bienvenue dans le monde des développeurs professionnels :pouce:

Toujours prévoir le cas où ça va ne pas marcher parce qu'il y a 9 chances sur 10 qu'il arrive ;)

par amalgame » 15 mars 2007, 17:21

Oueh, en fait si j'avais coder de manière un peu plus pro dès le dépard, j'aurais foutu des conditions dans chaque fonction pour le débugage... :oops:

J'aurais certainement au final moins perdu de temps.

note pour plutard : toujours partir du principe que ça peut ne pas marcher.

Enfin bref.
La tu as un bout de code html qui manifestement n'este pas totalement identique
Manifestement. Mais c'est justement ça que j'aimerai comprendre : pourquoi ce fichu bout de code n'est pas identique.
Parceque je l'extrait puis je le recherche dans le fichier d'où je l'ai extrait. J'aimerai bien savoir ce qui c'est passé entre c'est deux moments pour le rendre non trouvablepar mon str_teplace.

Parceque bon, quand un mur est trop haut, on passe à côté mais quand même, c'est couillon, refaire une autre fonction juste pour remplacer ce foutu code html alors que c'est le même principe que pour les {machin_truc}... T_T snif

par titerm » 15 mars 2007, 00:18

Bah quand on regarde ce que contient les vars c'est normal que seule {date} soit remplacé

tu fais un str_replace d'un array par un autre array
Donc chaque element du premier array sera remplacer par l'élement equivalent ds le second array

ton premier array contient
[tpl_recherche] => Array
        (
            [0] => {date}
            [1] => <!-- tpl_part#02:start -->
    <div>
        <img src = "{image}" alt="image de la partie de soir&eacute;e" width="100"/>
    </div>
    
    <div>
        <p>{debut}/{fin}</p>
    </div>

    
    <div>
        <p>{contenu}</p>
    </div>
<!-- tpl_part#02:end -->


        ) 

Alors pour l'élement 0, c 'est {date} et ca marche, Ok normale on le retrouve dans la section tpl_parties, mais pour l'element 1, c'est plutot louche comme éléement de recherche.... Tu devrais avoir {debut}, etc...
La tu as un bout de code html qui manifestement n'este pas totalement identique (y a déjà l'air d'avoir un newline en plus au dessus du div {debut}/{fin}....

Bref, t'aurai pu faire un file_put_contents de tes recherche et de ta cible, et tu aurai vupourquoi ca match pas.

par Jules Petibidon » 14 mars 2007, 18:55

je parlais surtout des déclarations de variables : "var" et "public" mélangés... c'est mal poli ;)

sinon pour ce qui est de ta classe, elle a l'air pas mal foutue, mais trop complexe pour la débuguer sur un forum peut-être ;)

tu devrais essayer un script de test, fonction par fonction... en commençant par de simples remplacements, puis ensuite en testant les boucles, etc...

enfin si tu veux t'éviter de te prendre le chou, il existe aussi des milliers de classes de templates, plus ou moins efficaces... mais je peux comprendre que c'est plus marrant de faire la sienne... j'ai fait la meme chose (qui ressemble fortement à la tienne d'ailleurs...)

bref, désolé de pas pouvoir t'aider plus, mais mon neurone a déja du mal avec le code que je ponds, alors celui des autres... ;)

par amalgame » 14 mars 2007, 16:20

Merci Jules pour ton aide ! :wink:
un petit print_r() sur les variables que tu passe à str_replace te donnerait peut-être une piste pour débugger ta classe... voir meme un print_r( $taClasse ), pour vérifier qu'elle a bien la "forme" escomptée..
Je viens de le faire et ça me donne pour une des soirées ça :
tpl_moteur Object
(
    [tpl_parties] => Array
        (
            [0] => <!-- tpl_part#01:start -->
	<div><h3><u>{date}</u></h3></div>

<!-- tpl_part#02:start -->
	<div>
		<img src = "{image}" alt="image de la partie de soir&eacute;e" width="100"/>
	</div>

	
	<div>
		<p>{debut}/{fin}</p>
	</div>
	
	<div>
		<p>{contenu}</p>
	</div>
<!-- tpl_part#02:end -->

<!-- tpl_part#01:end -->


        )

    [tpl_parties_alt] => 0
    [tpl_recherche] => Array
        (
            [0] => {date}
            [1] => <!-- tpl_part#02:start -->
	<div>
		<img src = "{image}" alt="image de la partie de soir&eacute;e" width="100"/>
	</div>
	
	<div>
		<p>{debut}/{fin}</p>
	</div>

	
	<div>
		<p>{contenu}</p>
	</div>
<!-- tpl_part#02:end -->


        )

    [tpl_remplace] => Array
        (
            [0] => 2007-03-18
            [1] => <!-- tpl_part#02:start -->
	<div>
		<img src = "http://img.audiofanzine.com/img/v35/logo.jpg?id=11" alt="image de la partie de soir&eacute;e" width="100"/>

	</div>
	
	<div>
		<p>20:00/21:30</p>
	</div>
	
	<div>
		<p>bla bla</p>
	</div>
<!-- tpl_part#02:end -->

<!-- tpl_part#02:start -->
	<div>
		<img src = "http://fr.audiofanzine.com/img/produits/normal/1/1/111163.jpg" alt="image de la partie de soir&eacute;e" width="100"/>
	</div>
	
	<div>
		<p>21:40/23:30</p>
	</div>
	
	<div>

		<p>Nec piget dicere avide magis hanc insulam populum Romanum invasisse quam iuste. Ptolomaeo enim rege foederato nobis et socio ob aerarii nostri angustias iusso sine ulla culpa proscribi ideoque hausto veneno voluntaria morte deleto et tributaria facta est </p>
	</div>
<!-- tpl_part#02:end -->


        )

    [tpl_html_out] => <!-- tpl_part#01:start -->
	<div><h3><u>2007-03-18</u></h3></div>

<!-- tpl_part#02:start -->
	<div>

		<img src = "{image}" alt="image de la partie de soir&eacute;e" width="100"/>
	</div>
	
	<div>
		<p>{debut}/{fin}</p>
	</div>
	
	<div>
		<p>{contenu}</p>
	</div>

<!-- tpl_part#02:end -->

<!-- tpl_part#01:end -->


)
Je comprends pas tout est là pour que ça remplace mais ça ne se remplace pas ! :shock:

ça me donne ça :

Code : Tout sélectionner

<!-- tpl_part#01:start --> <div><h3><u>2007-03-18</u></h3></div> <!-- tpl_part#02:start --> <div> <img src = "{image}" alt="image de la partie de soir&eacute;e" width="100"/> </div> <div> <p>{debut}/{fin}</p> </div> <div> <p>{contenu}</p> </div> <!-- tpl_part#02:end --> <!-- tpl_part#01:end -->
Si quelqu'un comprends quelquechose...

P.s. : si je mélange, php4 et 5 c'est pour que ça passe chez free. :? Enfin, si tu parles des requetes mysql.

par Jules Petibidon » 14 mars 2007, 13:43

hello,

un petit print_r() sur les variables que tu passe à str_replace te donnerait peut-être une piste pour débugger ta classe... voir meme un print_r( $taClasse ), pour vérifier qu'elle a bien la "forme" escomptée...

accessoirement, tu mélange des déclarations php5 et php4... à priori ca devrait pas causer de bug, (à moins que tu décide d'afficher les erreurs de niveau E_STRICT) mais c'est pas une habitude recommandable.

Bon courage ! ;)

par amalgame » 14 mars 2007, 13:28

Au secours !! :cry:

par amalgame » 13 mars 2007, 23:46

oups j'ai oublié de me logger, si un admin passe dans le coin :oops:

par Invité » 13 mars 2007, 23:30

ah oui non mais c'était comme ça avant ! lol
j'avais changé pour voir, j'ai oublié de le changer.

... et ça marche pas du coup. :(

par titerm » 13 mars 2007, 23:01

Sans regarder plus que ca, un truc m'attire l'oeil...
   $partie1->tpl_variables('$partie2->tpl_parties[0]','$tpl_html_out_partie2'); 
Je suis pas sur que tu veuilles faire ca...
Essai plutot comme ca...
   $partie1->tpl_variables($partie2->tpl_parties[0],$tpl_html_out_partie2); 

par amalgame » 13 mars 2007, 21:05

Ah oui, c'est pas faux :oops:
<?php

class tpl_moteur {

	public $tpl_html_out;
	public $tpl_parties;

	#var $tpl_parties = array();
	var $tpl_parties_max = int;
	var $tpl_parties_alt = int;

	var $tpl_recherche = array();
	var $tpl_remplace = array();

	function tpl_extraction_partie ($tpl_file_html,$tag){

		foreach ($tag as $html_tag){

			$verif = stripos($tpl_file_html, $html_tag);
			if ($verif === false) {

				# affichage erreur
   				echo "<b>Une erreur s'est produite :</b> le tag '<i>$html_tag</i>' n'a pas &eacute;t&eacute; trouv&eacute;e dans le template.";

			}else{

				# création des tags réels
				$html_tag_start = '<!-- '.$html_tag.':start -->';
				$html_tag_end = '<!-- '.$html_tag.':end -->';

				# calculs des limites de l'extrait
				$pos_debut_extrait = strpos($tpl_file_html,$html_tag_start);
				$pos_fin_extrait = strpos($tpl_file_html,$html_tag_end)+strlen($html_tag_end);

				# extraction de l'extrait
				$extrait = (substr($tpl_file_html, $pos_debut_extrait,$pos_fin_extrait-$pos_debut_extrait)."\n\n");

				# ajout de l'extrait dans le tableau
				$this->tpl_parties[] = $extrait;
			}
		}

		# On compte le nombre de partie pour l'alternance de pattern
		$this->tpl_parties_max = count ($this->tpl_parties);
		$this->tpl_parties_alt = 0 ;
	}

	function tpl_variables ($tpl_nom,$tpl_valeur){
		$this->tpl_recherche[] = $tpl_nom;
		$this->tpl_remplace[] = $tpl_valeur;
	}

	function tpl_remplacement(){

		$this->tpl_html_out = str_replace ($this->tpl_recherche, $this->tpl_remplace, $this->tpl_parties[$this->tpl_parties_alt]);

		$this->tpl_parties_alt +=1;
		if ($this->tpl_parties_alt>=$this->tpl_parties_max){
			$this->tpl_parties_alt = 0 ;
		}

	}

	function tpl_unset(){
		unset ($this->tpl_recherche,$this->tpl_remplace,$this->tpl_parties_max,$this->tplparties_alt,$this->tpl_html_out);
	}
}
?>

par titerm » 13 mars 2007, 20:59

sans la définition de la class tpl_moteur(), on aura bien du mal a t'aider