Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   Perl: end-of-line strippen (https://forum.scholieren.com/showthread.php?t=111600)

eddie 31-05-2002 08:37

Tja...
Ik kom er niet uit. :(

Ik heb dus zo'n textarea, met wrap='hard', zodat ook de regeleindes worden meegestuurd naar de server.

Maar nu wil ik de regeleindes tijdens/na uitlezen vervangen door <BR>. Maar de ingetypte tekst '\n' wil ik NIET vervangen.

Hoe moet dit?

Ik heb:
$cPostTekst =~ s/\\n/<BR>/g;
$cPostTekst =~ s/(\\<BR>)/\\n/g;
$cPostTekst =~ s/\\/\\\\/g;

Twee enters worden overigens ook niet meegenomen/opgeslagen in de db. (MySQL)


Triloxigen 31-05-2002 09:36

vraagje tussendoor, waarom gebruik je eigenlijk perl en geen php ofzo
[zal wel een reden voor zijn, maar wat is die dan]

eddie 31-05-2002 09:45

Nou...
Ik heb Perl als eerste geleerd tijdens mijn eerste stage, en ik vond het geweldig! :D (y) (m.a.w.: Ik kan niet echt PHP :o)

Trouwens, PHP == Perl voor beginners :p

Ik wou ook wel ColdFusion doen, maar dat ondersteun mijn hostingprovider niet (is beetje duur... CF-server iets van $6000)

Triloxigen 31-05-2002 09:59

neem endoria, kost je niks :D:D

eddie 31-05-2002 10:03

Die hebben ook geen ColdFusion Server....

Ontopic maar weer? :)

Weet je trouwens wel hoe het zou moeten in PHP?

Triloxigen 31-05-2002 10:07

Ik snap niet helemaal wat je wilt eerlijk gezegd
[ik d8 dat endoria wel cf had :/]

je wilt iig iets met /n en <br> maar wat is een beetje vaag
heb je iets aan nl2br() [php dus]

Snap dus niet precies wat je wilt ;)

eddie 31-05-2002 10:14

Citaat:

McLaren schreef:
Ik snap niet helemaal wat je wilt eerlijk gezegd
[ik d8 dat endoria wel cf had :/]

Citaat:

De endoria.net webserver ondersteund HTML, JavaScript, PHP, CGI, (perl, C en python) en ASP content (het laatste werkt niet helemaal ok, maar goed)
De database die je kunt krijgen is een mySQL database.
Er is ook een mogelijkheid om gebruik te maken van FXP. Een verbinding maken via SSL is ook mogelijk.
Van http://**********.endoria.net/mirrors/faq.endoria.net

Citaat:

McLaren schreef:

je wilt iig iets met /n en <br> maar wat is een beetje vaag
heb je iets aan nl2br() [php dus]

Snap dus niet precies wat je wilt ;)

nl2br() misschien wel, als je mij zegt hoe die werkt... ;)

HTML-pagina -> FORM -> TEXTAREA:wrap="hard"
Snap je bovenstaande regel?
De tekst die in de textarea staat, moet met newline's worden weggeschreven (ok, dit lukt)

Maar wanneer ik de data uitlees, moet ik de newlines converteren naar <BR>, anders komt alles op dezelfde regel...

En nu komt het moelijke:
Je kunt in de textarea ook gewoon het newlinekarater (\n) intypen. Deze moet dus niet worden omgezet.

Triloxigen 31-05-2002 10:27

ahaa, dus als iemand in een textarea typt \n dat ie dat niet omzet, maa een echte regel wel..

Ik dnek eerlijk gezegd dat ie daar geen verschil in kan zien..

maareuhm, nl2br
$var = "blaaaaaaaaaaaat blablabla\n okokokokokook";
$var = nl2br($var);

<textarea name="naampje">$var</textarea>
zal er zoiets uit komen te zien
Code:

_____________________________
| blaaaaaaaaaaaat blablabla  |
| okokokokokook              |
|_____________________________|

en in html:
<textarea name="naampje">
blaaaaaaaaaaaat blablabla<br \>
okokokokokook
</textarea>

Maar als mensen zelf \n intypen kun je volgens mij weinig aan doen :/

eddie 31-05-2002 10:28

Citaat:

McLaren schreef:

Maar als mensen zelf \n intypen kun je volgens mij weinig aan doen :/

Waarom werkt het hier dan wel?

Triloxigen 31-05-2002 10:30

Citaat:

eddie schreef:

Waarom werkt het hier dan wel?

\n ff kijken \n denk je?

ennuh, wrap="hard" is geen officiele html tag

Triloxigen 31-05-2002 10:31

Citaat:

eddie schreef:

Waarom werkt het hier dan wel?

ah, maybe snap ik het..
maybe gebruiken ze addslashes()

dan kom er uiteindelijk \\n te staan dus...

Triloxigen 31-05-2002 10:33

ik denk dat er zoiets word gedaan

$var = "blaaaaaaaaaaaat blablabla\n okokokokokook";
$var = nl2br($var);

<textarea name="naampje">$var</textarea>

zet in databse:
$var = addslashes($naampje");

ik weet het niet zeker, maar het zou kunnen

ennuh, php manual:
www.php.net/<type_hier_je_vraag>

eddie 31-05-2002 10:38

en dat werkt niet :D :D
Want, je zet in de database \\n ipv \n, dus ook de echte newline karakters worden zo opgeslagen...

Triloxigen 31-05-2002 10:42

Citaat:

eddie schreef:
en dat werkt niet :D :D
Want, je zet in de database \\n ipv \n, dus ook de echte newline karakters worden zo opgeslagen...

dan gebruik je stripslashes();

;)

Triloxigen 31-05-2002 10:45

foutje gemaakt in mijn ideeen :/


Hij zet geen <br> in de html van een textarea, het is gewoon een enter op zich :/

er word dus geen nl2br gebruik..

eddie 31-05-2002 10:47

Citaat:

McLaren schreef:


dan gebruik je stripslashes();

;)

Dan werkt het nog niet ;)

Echte newline \n wordt \\n
Nep ook: \\n
Met addslashes.

stipslashes-resultaat:
echt: \n
nep: \n

nl2br();
echt: <BR>
nep: <BR>

:( :)

eddie 31-05-2002 10:48

Citaat:

McLaren schreef:
foutje gemaakt in mijn ideeen :/


Hij zet geen <br> in de html van een textarea, het is gewoon een enter op zich :/

er word dus geen nl2br gebruik..

Om de tekst uit de database in een textarea te proppen levert geen problemen op.

Wel om het in HTML weer te geven.

Kijk anders maar even: http://www.erikdokter.nl/forum
Alleen kijken indien je geen IE 6 hebt :)

eddie 31-05-2002 10:56

wat ik trouwens had bedacht:

vervang alle \n door <BR>
vervang alle \<BR> door \\n

Maar wat als mij intypt: \\n? of \\\n?

Triloxigen 31-05-2002 10:59

Citaat:

eddie schreef:

Om de tekst uit de database in een textarea te proppen levert geen problemen op.

Wel om het in HTML weer te geven.

Kijk anders maar even: http://www.erikdokter.nl/forum
Alleen kijken indien je geen IE 6 hebt :)

ik heb hier MSIE6 ;)

Triloxigen 31-05-2002 11:02

voor een var in een textarea moet je geen <br> gebruiken he..

het zal iets zijn als:

$var = stripslashes($var);

<textarea>$var</textarea>

voor in db: $var = addslashes($var);



en dan om een post te printen:
$var = stripslashes(nl2br($var));
echo "post: $var";

[maybe moeetn de stripslashes & nl2b andersom..]

[maar nu moet ik weg :/, byebye]

eddie 31-05-2002 14:01

volgens mij gaat dat nog niet werken :)

Chip Zero 31-05-2002 14:05

Hoe lees je die textarea in dan? Als ik zo'n ding inlees, ziet het er zo uit: "sdgdsg%0D%0Asdgasdg%0D%0A%0D%0Asdg%5Cn". Na url-decoden wordt dat dit:
"sdgdsg
sdgasdg
sdg\n"

Als je dan gewoon \n vervangt door <BR> en de hierboven zichtbare \\n laat zoals ie is, dan werkt het toch gewoon zoals je wilt? :confused:

Mod_perl, de apache perl module is trouwens een stuk sneller dan php (wordt maar één keer geparsed, bij het uploaden) en je kan er meer mee (ook meer taalconstructies).

eddie 31-05-2002 14:09

Nog even vraagje :D

In MySQL is de functie LAST_INSERT_ID() of mysql_insert_id()

Echter, is snap niet hoe ik dit in Perl moet aanroepen.
Ik heb:
-----
local $stopic = $dbh->prepare( "INSERT INTO topic (subforum, omschr, begonnen, laatstepost) VALUES (\'$subforum\', \'$onderwerp\', \'eddie\', \'$datum\')" );
$lCheck = $stopic->execute();
$topic = "";
if ( $lCheck )
{
$topic = $stopic->func( {}, "mysql_insert_id");
}

print $topic;
-----
Maar hij doet't niet :(

Iemand? :)

eddie 31-05-2002 14:14

Citaat:

Chip Zero schreef:
Hoe lees je die textarea in dan? Als ik zo'n ding inlees, ziet het er zo uit: "sdgdsg%0D%0Asdgasdg%0D%0A%0D%0Asdg%5Cn". Na url-decoden wordt dat dit:
"sdgdsg
sdgasdg
sdg\n"

Als je dan gewoon \n vervangt door <BR> en de hierboven zichtbare \\n laat zoals ie is, dan werkt het toch gewoon zoals je wilt? :confused:

Mod_perl, de apache perl module is trouwens een stuk sneller dan php (wordt maar één keer geparsed, bij het uploaden) en je kan er meer mee (ook meer taalconstructies).

Ik gebruik gewoon de functie &ReadParse (*field) in cgi-lib.pl

De inhoud van het textarea is dan gewoon $field{ $textareanaam }
Dit prop ik (bijna) meteen in de database.
En lees ik weer uit.
In de database staat het bijna gewoon goed. (twee opeenvolgende enters worden niet gezien ofzo)

Chip Zero 31-05-2002 14:25

Citaat:

eddie schreef:
Ik gebruik gewoon de functie &ReadParse (*field) in cgi-lib.pl

De inhoud van het textarea is dan gewoon $field{ $textareanaam }
Dit prop ik (bijna) meteen in de database.
En lees ik weer uit.
In de database staat het bijna gewoon goed. (twee opeenvolgende enters worden niet gezien ofzo)

Ik doe het meestal zo, handmatig:
Code:

use CGI;
my $c = new CGI;
my $hoi = $c->param("hoi");

Anyway, ziet de string die je inleest met readparse er anders uit dan die van mij? Anders zou je namelijk gewoon $cPostTekst =~ s/\n/<BR>/g; moeten kunnen doen?!

Chip Zero 31-05-2002 14:32

En over dat MySQL: misschien dat een paar ' or die "fout:
$DBI::errstr"' statements achter de regels meer duidelijkheid geven? Daar weet ik verder ook maar weinig van af...

eddie 31-05-2002 14:35

Citaat:

Chip Zero schreef:
Ik doe het meestal zo, handmatig:
Code:

use CGI;
my $c = new CGI;
my $hoi = $c->param("hoi");

Anyway, ziet de string die je inleest met readparse er anders uit dan die van mij? Anders zou je namelijk gewoon $cPostTekst =~ s/\n/<BR>/g; moeten kunnen doen?!

Shame on me! :o :o

ReadParse:
1) zet alle hex-codes om naar alfanumeriek
2) verwijderd alle html-tags

*schaamt zich* :o

Code:

# Convert %XX from hex numbers to alphanumeric
$key =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;
$val =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;

#Remove all HTML tags
$val =~ s/<([^>]|\n)*>//g;


Chimera 31-05-2002 18:13

Citaat:

eddie schreef:
Nog even vraagje :D

In MySQL is de functie LAST_INSERT_ID() of mysql_insert_id()

Echter, is snap niet hoe ik dit in Perl moet aanroepen.

"SELECT LAST_INSERT_ID()" gewoon als query IIRC.

eddie 31-05-2002 18:42

Citaat:

Chimera schreef:


"SELECT LAST_INSERT_ID()" gewoon als query IIRC.

Okeeej!
Hij doet het!! :cool:

Dank :)


Alle tijden zijn GMT +1. Het is nu 22:46.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.