Dobrý deň,
potreboval by som poradiť s číslovaním strán v PHP, s ktorým si neviem dať už rady dlhšiu dobu. Mám premennú content, ktorá obsahuje dlhý reťazec textu, ktorý je navyše ešte HTML formátovaný. Potrebujem vsadiť po skončení každej strany do premennej content "<br>STRANA - $cislo_strany</br>".
Pôvodne som to riešil tak trochu drevorubačsky, že som si určil koľko znakov bude mať jedna strana a po prekročení tohto znaku som len vložil do reťazca "<br>STRANA - $cislo_strany</br>". Problém je však v tom, čo ak mi to vyjde niekde v strede html tagu. Potom sa mi poškodí html formátovanie textu.
Ďakujem za pomoc, v prípade otázok som online na ICQ: 336259591, želám pekný deň.
Fórum › PHP
Číslovanie strán
Nie, Nie, viem, ze sa jedna o zaujimavu ulohu, ale takuto poziadavku som dostal a mam ju naprogramovat. Jedna sa o tzv. internetovy casopis. Autor posle prispevok a ak ho oponent schvali, potom ho mozem odpublikovat. Kazdemu clanku som pridelil jedinecne identifikacne cislo, aby sa dal clanok rychlo najst a identifikovat. Vsetko toto uz mam a vsetko funguje. Moj nadriadeny mi vsak dal taktuto zaujimavu ulohu:
Ze jemu identifikacne cislo nepomoze, ze on aby svoj prispevok mohol spravne podla normy uviest, potrebuje vediet cislo strany od - do, kde bol publikovany. No a tu vznikla moja uloha ocislovat strany na HTML stranke. Obrazky ma nezaujimaju - nemusia byt vo vypocte cisla strany zohladnene. Potrebujem len vymysliet, ako by sa dalo spravit to, ak mam v premennej content ulozene napr. toto: "<cokolvek>dlllllhyyy retazec</cokolvek> slov a viet", aby to nerobilo takuto chybu:
"<cokolvek <br> Strana 1 <br> >dlllllhyyy retazec</cokolvek> slov a viet" - rozbije tag - vlozi tag do tagu
"<cokolvek>dlllllh<br> Strana 1 <br>yyy retazec</cokolvek> slov a viet" - sekne slovo v strede
"<cokolvek>dlllllhyyy <br> Strana 1 <br> retazec</cokolvek> - toto je spravne
Dakujem.
$dlouhy_retezec = "ABCDEF 123456 ABCDEF 0123456 <b>ZDÁÁÁR</b> 00000 IFVOVP";
$limit = 100; // kolik znaků na stránku
$retezec = $dlouhy_retezec; // Pokud by nebylo potřeba dělit na stránky
if(strlen($dlouhy_retezec) > $limit) // Je delší než počet znaků na stránku?
{
$retezec = substr($dlouhy_retezec, 0, strrpos(substr($dlouhy_retezec, 0, $limit)," "))."<b> Další stránka</b> ";
}
echo $retezec;
tenhel script je ale potřeba spouštět nějakým cyklem a ještě to neřeší <font color="#FF66FF"> kde to může vložit do tý mezery
Taký kanón na vrabce, ale mohlo by to fungovať. Na odlaďovanie a optimalizáciu, už dnes nemám síl. A to zobrazenie strany si ošetri v CSS, lebo keď sa náhodou nachádza medzi tágami, tak preberá štýly.
<?php
define('LIMIT', 10); // pocet znakov na jednu stranu
$content = '<p>Lorem ipsum<font color="#FF0000"> dolor sit</font> amet, consectetur adipiscing elit. Ut purus lorem, venenatis at, consequat vel, mollis sit amet, sem. Sed laoreet dolor a eros.</p>';
$dlzka = strlen($content);
$cislo_strany = 1;
$pocet = 0; // odpocet znakov
$tag = false;
for ($i = 0; $i < $dlzka; $i++) {
if ($content[$i] == '<') {
$tag = true;
continue;
}
if ($content[$i] == '>') {
$tag = false;
continue;
}
if (!$tag) {
$pocet++;
if ($content[$i] == ' ' && $pocet >= LIMIT) {
$doplnok = 'STRANA - '.$cislo_strany.'';
$velkost_doplnka = strlen($doplnok);
$content = substr($content, 0, $i).$doplnok.substr($content, $i);
$dlzka += $velkost_doplnka;
$i += $velkost_doplnka;
$cislo_strany++;
$pocet = 0;
}
}
}
echo $content;
?>
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Poměr stran — založil Salieri
Jak zachovat poměr stran/velikosti v designu ve WINFORM? — založil michaelbeats7
Potrebuju poradit s hlavickou stranky — založil santoro
Pomoc se stránkováním — založil Rodgers23
Moderátoři diskuze