Autor Zpráva
Thomasss
Profil *
Řeším problém s knihou návštěv. Snažím se o to, abych měl jeden příspěvek na jednom řádku.

To mi funguje, ale pouze v případě, že člověk nevloží do zprávy další řádky (pomocí tlačítka enter). V tom případě se mi ve zdrojáku napíše <br /> a hned je zpráva na dvou řádcích.

nevíte, jak bych mohl udělat, aby mi text (ve zdrojáku) zůstal na jendom řádku?
ash721
Profil
Není to jasné? Prostě si najděte v kódu tu funkci která ten text formátuje a odstraňte ji.
Marcus Flintus
Profil
přesně jsem to nepochopil, takže:

nový řádek pro html -> <br>
nový řádek pro zdroják -> \r\n

takže pokud chceš mít všechno na jednom řádku v html (to co uživatel vidí), pak to bude:
$string = str_replace("<br>", "", $string);

pokud jenom ve zdrojáku tak to bude těžší, nabízim 2 varianty (dávám z hlavy, za správnost neručim):

$string = str_replace("\r\n", "", $string);

nebo zbytečně složitá varianta (mam kreativní náladu):

$pole = explode( "\r\n", $string );
for($i = 0; $i<count($pole), $i++){
$pole[$i] = substr( $pole[$i], 4 ); //vezme vše od 4tého znaku (včetně?)
}
$string = implode("", $pole);
krteczek
Profil
no tady jde o to že v kodu máte asi použitou funkci nr2br() kterou převádíte \n na <br />, tuto funkci odstraňte a nahraďte třeba touto:

$text = strtr($text, array("\r" => ""));//odstranění návratu vozíku
$text = preg_replace('#(' . "\n" . '{2,})#', "<br><br>", $text); //dva a více odřádkování převede na <br><br>
$text = strtr($text, array("\n" => "<br>")); //jednoodřádkování nahradí <br>

pokud byste chtěl z dvou a více enter za sebou udělat nový odstavec tak hledejte zde na foru, dneska už jsem to tady jednou dával
Thomasss
Profil *
Díky za pomoc, bohužel mi to ale nepomohlo.
Namísto nového řádku se objeví <br>... ve zdrojáku je entita.

Ale řádkování textu ve zdrojovym kódu je správně :)
Alphard
Profil
se objeví <br> asi nl2br
ve zdrojáku je entita jaká?

jestli to není tajny, tak ukaž skript
Thomasss
Profil *
Takhle jsem to upravil:

$Zprava = strtr($Zprava, array("\r" => ""));
$Zprava = preg_replace('#(' . "\n" . '{2,})#', "<br><br>", $Zprava);
$Zprava = strtr($Zprava, array("\n" => "<br>"));
FPutS($fp, stripslashes(HTMLSpecialChars($Zprava)));
Alphard
Profil
jo, ale kde vezmeš $Zprava
Thomasss
Profil *
$Zprava - to vezmu z formuláře...


takhle vypadá ve zdrojáku:
první řádek&lt;br&gt;tohle by mělo být na druhém

zobrazeno je to takhle:
první řádek<br>tohle by mělo být na druhém
krteczek
Profil
no jasně, ale to htmlspecialchars má být první!!!,
krteczek
Alphard
Profil
Thomasss

já už nevím, co chceš:

v první příspěvku píšeš, že to chceš mít na 1 řádku: Snažím se o to, abych měl jeden příspěvek na jednom řádku.

dále, že na více: Namísto nového řádku se objeví <br>... ve zdrojáku je entita.

ta entita je tam kvůli funkci: HTMLSpecialChars => převede <br> na &lt;br&gt;
Thomasss
Profil *
krteczek:

jak to má být první?
krteczek
Profil
$Zprava = stripslashes($_POST['zprava']);
$Zprava = HTMLSpecialChars($Zprava);
$Zprava = strtr($Zprava, array("\r" => ""));
$Zprava = preg_replace('#(' . "\n" . '{2,})#', "<br><br>", $Zprava);
$Zprava = strtr($Zprava, array("\n" => "<br>"));
FPutS($fp, $Zprava);
Toto téma je uzamčeno. Odpověď nelze zaslat.

0