Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z prostym parserem
Forum PHP.pl > Forum > Gotowe rozwiązania
Cod
Gdzieś w internecie znalazłem bardzo prosty parser.

[php:1:6a97ad5b05]<?
class template
{
var $unparsed = array(0 => "");
var $parsed = "";
var $blocks = array("default" => "");

function load($plik)
{
$this -> unparsed = @file("templates/".$plik.".tpl");
}

function parse()
{
$this -> parsed = "";
$cnt = count($this -> unparsed);
for($i = 0; $i <= $cnt; $i++)
{
$tekst = $this -> unparsed[$i];
$found = array();
if(preg_match_all("#{(.+?)}#is", $tekst, $found))
{
foreach($found[0] as $block)
{
$block = str_replace("{", "", $block);
$block = str_replace("}", "", $block);
$tekst = str_replace("{".$block."}", $this -> blocks[$block], $tekst);
}
}
$this -> parsed .= $tekst;
}
}
}
?>[/php:1:6a97ad5b05]

Wszystko działa dobrze na necie, możecie zobaczyć http://www.portal.p2.pl. Problem jest na serwerze wirtualnym Xitami. Skrypt działa poprawnie, ale ni stąd, ni z owąd, nad każdym z napisów wyskakuje "Warning: Undefined offset: 6 in E:PROGRAMYXITAMIwebpagesnewincludestemplate.php on line 19". Co mam o tym myśleć?
Wankster
a co dajesz do właściwości blocks?
Chodzi mi o
$template->blocks = array( o_to );
KaMeLeOn
[php:1:28f75e9068]<?php
// [...]

for($i = 0; $i < $cnt; $i++)
{

// [...]

}
?>[/php:1:28f75e9068]
Tak powinno być dobrze...
Cod
Dzięki very much Kameleon. Działa już dobrze smile.gif.

A teraz druga sprawa: Czy ktoś z Was potrafiłby rozbudować ten skrypt, żeby wyświetlał wartości jakiejś tablicy, tak jak w phpBB? Czyli, że podaje się tylko raz kod HTML w odpowiednich znacznikach, a on wyświetla się tyle razy, ile pól ma tablica. Byłbym dźwięczny winksmiley.jpg.
Cudi
Na tej samej stronie z której masz ten kod jest równierz bardziej rozbudowany parser, tego samego autora, który ma if'y, sekcje, subsekcje i inne zabawki.
Cod
Hmmm... Czy myślimy o tej samej stronie i tym samym artykule? http://webcity.pl/artykuly.php/t/5? Jeśli tak, to ja tam za Chiny nie mogę znaleźć tego, o czym piszesz sad.gif. Jeśli byłbyś taki miły, pomóż koledze i zapodaj dokładnego linka biggrin.gif.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.