Autor Zpráva
Nox
Profil
Zdravím,
Mám skript a ten dostane jako zdrojová data řetězec a to ve dvou možných formách: buď ručně zadaný ($text="Něco\n\nblabla...") přímo v PHP, odřádkování pomocí vepsaného "\n" | anebo z formuláře z textarei ($text=stripslashes($_POST["ntext"]))

Poté na řetězec aplikuji nl2br => to sice převede "\n" na "<br />", ale v obou případech za tím nechá mezeru (bin2hex hlásí "20", takže to je mezera)

Tu se pokouším odstranit pomocí, takže řádek je:
$text=str_replace("<br /> ","<br />",nl2br($text));
nebo
$text=preg_replace("/<br \/>(\s)/i","<br />",nl2br($text));
nebo
$text=preg_replace("/<br \/>(\n| )/i","<br />",nl2br($text));


Záhada je, že v případě pevně zapsané hodnoty toto funguje, v případě hodnoty z formuláře je mezera nedobytná,
pokud by někdo věděl co s tím, budu mu vděčný

Případné další info dodám...
formulář
<form action="?sekce=napoveda" method="post">
<h3>Data</h3>
<textarea name="ntext" rows="18" cols="75"></textarea>
<br>
<input type="submit" value="GO!" class="velky">

<h3>Result</h3>
<div style="border: 3px double rgb(150,150,150);padding: 5px;margin-bottom: 15px">
<?php
if(isset($_POST["ntext"])){
  $text=stripslashes($_POST["ntext"]);
  include "../scms_pluginy/Scriptorica/core.php";
  }
?>
</div>

<textarea rows="16" cols="130"><?php echo $text?></textarea>

</form>


core.php
<?php
if($_GET["sekce"]=="administrace"){  // pokud nejsou data z formuláře
$text="##1Test\n\n*Lotrům* i ;;psům;;\n\nTest\n\n- seznam..(delší text)..";  }

echo htmlspecialchars(nl2br($text));

$text=preg_replace("/<br \/>(\s)/im","<br />",nl2br($text));

echo "<br /><br />".htmlspecialchars($text);
...
Nox
Profil
Tak už to snad mám => znaky tam byly dva, šmejdi...
$text=str_replace("<br />\r\n","<br />",nl2br($text));


...nechám to tu otevřené, kdybyste tu chtěli zanechat nějaké moudro:)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: