webForumDet fria alternativet

inget skrivs ut

1 svar · 131 visningar · startad av SuPeR_ToBBe

SuPeR_ToBBeMedlem sedan mars 2001185 inlägg
#1

Jag har gjort ett försök att göra om Vide's tagg-parser från ASP till PHP, men jag fattade inget av koden, så jag gjorde en egen funktion istället.

Men nu kommer problemet: INGET SKRIVS UT!

Koden:

<?php
function parseText($filen,$tagName,$n2b){ // parseText("din_fil.txt","taggens_namn",1);
	//(om du vill ha <br> vid varje ny rad, så är sista 1, annars 0).
 $startTag = "[".$tagName."]\n";
 $endTag = "[/".$tagName."]\n";
 $pr = "";
 $rader = file($filen);
 $e=0;

 for($i=0;$i<count($rader);$i++){
  if($rader[$i]==$startTag){
   break; $e=1; }
 }
 if($e) {
  for($ix=$i;$ix<count($rader);$ix++){
   if($rader[$ix]==$endTag){
    break; }
  }
  for($xi=$i;$xi<=$ix;$xi++){
   $pr .= $rader[$xi];
  }
 } else {
  $pr .= "Inget info\n";
 }
 if($n2b) $pr = nl2br($pr);
 else $pr = $pr;

 return $pr;
}
?>

<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<?php
echo parseText("test.txt","test",1);
?>
</font>

Är det någon som ser felet ??.

nicclasMedlem sedan feb. 20001 050 inlägg
#2

Sunkig kod ;)

1. Byt $rader[$i] mot trim($rader[$i])
2. Byt plats på break; och $e=1;

Denna kod funkar inte bra om du använder en tagg flera gånger i samma fil (endast den första kommer att fungera!). Om det är ett problem för dig, prova denna version:

<?php
function parse2Text($filen,$tagName,$n2b){
	$texten = join('',file($filen));
	$res=preg_replace("/.*?(\[".$tagName."\]\r\n)(.*?)(\[\/".$tagName."\]\r\n).*?/ms","\\2",$texten);
	if($n2b==1)
		$res=nl2br($res);
	return $res;
}
?>
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<?php
echo parse2Text("test.txt","test",1);
?>
</font>

/nicclas - www.nyhetsrubriker.com

137 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)