Avatar billede Slettet bruger
09. august 2004 - 11:33 Der er 45 kommentarer og
1 løsning

Gennemsøgning af streng

Hejsa

Jeg har en streng som jeg gerne vil have gennemsøgt for Ascii(13) (jeg mener det er ENTER), faktisk ligesom her på eksperten.

Hvordan gør jeg det?
Og hvordan søger jeg efter [a] [/a]
Avatar billede sone Nybegynder
09. august 2004 - 11:41 #1
Skal du finde positionen for tegnet eller erstatte tegnet med noget andet?
Avatar billede tlist Nybegynder
09. august 2004 - 11:58 #2
Brug regular expressions. læs evt. her : http://www.webreference.com/js/column5/
Avatar billede thedeathart Nybegynder
09. august 2004 - 13:36 #3
hvis du skal finde f.eks. [a] kan du lave en

$mystring = 'hej [a] med [/a] dig :P';
$findme  = '[a]';
$pos = strpos($mystring, $findme);

så får du nummeret på tegnet i stregen, men hvis du f.eks. vil lave  [/a] osv til links, så skal du kigger på str_replace , eller smartere til ereg_replace & preg_replace (kig i manualen)
Avatar billede coderdk Praktikant
09. august 2004 - 14:12 #4
Hvis du vil lave <ENTER> om til <br> så kan du bruge nl2br() http://dk2.php.net/nl2br
Avatar billede coderdk Praktikant
09. august 2004 - 14:14 #5
Oh, og [a]blah[/a] tingen:
$text = "din tekst her [a]blah blah[/a]";
preg_match_all( "/\[a\](.*?)\[\/a\]/si", $text, $matches );

echo "<pre>"; var_dump( $matches );
Avatar billede Slettet bruger
09. august 2004 - 18:13 #6
sone > fx: hvis jeg skriver: [a]www.wollsen.com[/a] vil jeg have det gjort om til <a href="www.wollsen.om</a>" target="_blank">http://www.wollsen.com">www.wollsen.om</a>

thedeathart > Kan du evt komme med nogle eksempler på de ting du lister op?

coderdk > så hvis jeg trykker ENTER i et felt som jeg skriver i her, ser php det som \n? eller skal jeg skrive \n?
Avatar billede coderdk Praktikant
09. august 2004 - 18:18 #7
preg_replace( "/\[a\](.*?)\[\/a\]/si", '<a href="\\1">\\1</a>", $text );

Hvis du taster enter i et textarea, og kører det igennem nl2br laver den dem om til <br> du skal ikke skrive \n :)
Avatar billede Slettet bruger
09. august 2004 - 19:03 #8
ok lyder godt, og hvordan virker den der preg_replace helt 100?
Avatar billede Slettet bruger
09. august 2004 - 19:04 #9
$skrevet = nl2br($_POST['writen'];) <- ville den virke fint eller?
Avatar billede Slettet bruger
09. august 2004 - 19:08 #10
det kan jeg så nu sige at det ikke gjorde!
Avatar billede coderdk Praktikant
10. august 2004 - 00:12 #11
Hvis "writen" er navnet på et textarea i en POST form, hvor du har skrevet retur/enter i, burde $skrevet indeholde texten hvor linieskift er erstattet med <br>.

Dette virker:

$text = <<<STOP
Dette er en besked
hvor der er enter i

mere her.
STOP;

$skrevet = nl2br( $text );
echo $skrevet;

Se http://dk2.php.net/nl2br

  /\[a\](.*?)\[\/a\]/si

Betyder: Led efter text der begynder med [a] og slutter med [/a], texten imellem gemmes i register 1. Erstat alt fundet med <a href="\\1">\\1</a> hvor \\1 så betyder "indholdet af register 1".

preg_replace er (eller kan være) kompleks. Det kan anbefales at læse:

http://dk2.php.net/PCRE
http://dk2.php.net/pcre.pattern.syntax
http://dk2.php.net/pcre.pattern.modifiers

Se evt. google søgning på:

http://google.com/search?q=pcre+regular+expressions+tutorial

PCRE / Regular expressions er guld værd! Det kan virkelig betale sig at sætte sig ind i det :)
Avatar billede Slettet bruger
10. august 2004 - 08:28 #12
hvad så hvis jeg vil have gjort sådan her: [a link="http://www.gem.dk"]Tekst[/a]
Så den gemmer både url og teksten?
Avatar billede Slettet bruger
10. august 2004 - 08:36 #13
min $skrevet blev sat ind i database, så derfor virkede det ikke. Jeg kørte mit database udtræk gennem nl2br og det virkede :)
Avatar billede coderdk Praktikant
10. august 2004 - 09:17 #14
Ah :)
Avatar billede Slettet bruger
10. august 2004 - 09:43 #15
men kunne du svare på det jeg skrev 10/08-2004 08:28:59, håber der er et svar i aften ved kl 18. Der er jeg nemlig hjemme igen. Skal i skole nu :)
Avatar billede coderdk Praktikant
10. august 2004 - 10:16 #16
preg_replace( "/\[a link=\"(.*?)\"\](.*?)\[\/a\]/si", '<a href="\\1">\\2</a>", $text );
Avatar billede Slettet bruger
10. august 2004 - 11:40 #17
og så er \\1 url'en og \\2 teksten?
Avatar billede Slettet bruger
10. august 2004 - 11:41 #18
tak for hjælpen :)
Avatar billede coderdk Praktikant
10. august 2004 - 15:57 #19
Det var så lidt :)

Ja, man kan "tælle" på () hvilket register det bliver smidt i. Regular expressions er lækre :)
Avatar billede Slettet bruger
11. august 2004 - 09:17 #20
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/web/web8411/addnews2.php on line 21

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/web/web8411/addnews2.php on line 21

Parse error: parse error, unexpected T_LNUMBER in /home/web/web8411/addnews2.php on line 21


Jeg kører den igennem det "filter" inden jeg smider det i databasen og får så de fejl!
Avatar billede coderdk Praktikant
11. august 2004 - 09:36 #21
Hvad står der på linie 21?
Avatar billede Slettet bruger
11. august 2004 - 11:51 #22
preg_replace( "/\[a link=\"(.*?)\"\](.*?)\[\/a\]/si", "<a href="\\1">\\2</a>", $_GET['written'] );
Avatar billede Slettet bruger
11. august 2004 - 11:51 #23
hov

$skrevet = preg_replace( "/\[a link=\"(.*?)\"\](.*?)\[\/a\]/si", "<a href="\\1">\\2</a>", $_GET['written'] );

sådan :)
Avatar billede coderdk Praktikant
11. august 2004 - 14:18 #24
Ret den til:

$skrevet = preg_replace( "/\[a link=\"(.*?)\"\](.*?)\[\/a\]/si", "<a href=\"\\1\">\\2</a>", $_GET['written'] );

eller

$skrevet = preg_replace( "/\[a link=\"(.*?)\"\](.*?)\[\/a\]/si", '<a href="\\1">\\2</a>', $_GET['written'] );
Avatar billede Slettet bruger
11. august 2004 - 18:53 #25
http://www.wollsen.com/index2.php?side=news

Så kan du se hvad der sker
Kan det evt være fordi at jeg skal køre den igennem filteret inden jeg spytter den ud på siden, ligesom ved nl2br?
Avatar billede coderdk Praktikant
11. august 2004 - 18:59 #26
Har du rettet den, som jeg skrev i min sidste kommentar?
Avatar billede Slettet bruger
11. august 2004 - 19:02 #27
ja det har jeg gjort, der kom netop ingen fejl nu
Avatar billede coderdk Praktikant
11. august 2004 - 19:04 #28
Ja, den replacer jo ikke noget lige nu så vidt jeg kan se, prøv at smide den igennem den preg_replace inden du spytter den ud... :)
Avatar billede Slettet bruger
11. august 2004 - 19:05 #29
skal jeg slette det inden jeg smider det ind i databasen eller lade det stå? Den ignorerer det jo alligevel
Avatar billede Slettet bruger
11. august 2004 - 19:08 #30
Avatar billede coderdk Praktikant
11. august 2004 - 19:31 #31
Uhm, hvis du bruger preg_replace før du smider det ind burde det være ændret jo...
Må jeg se koden omkring hvor du bruger preg_replace?
Avatar billede Slettet bruger
11. august 2004 - 19:33 #32
<?PHP
session_start();
$sessid = session_id();
include ("config.php");
    $db = mysql_connect("$server","$userid","$pw");
    mysql_select_db("$dbase",$db);
$getindlaeg=mysql_query("SELECT * FROM `login` ORDER BY 1 DESC",$db);
while ($liste=mysql_fetch_row($getindlaeg)) {
if ($sessid != $liste[2]) {
echo "<script>parent.location.href='login.php'</script>";
}
}
?>

<HTML>
<BODY BGCOLOR="#f0f0f0">

<?PHP
$head = $_POST['overskrift'];
$text = $_POST['tekst'];
$skrevet = preg_replace( "/\[a link=\"(.*?)\"\](.*?)\[\/a\]/si", "<a href="\\1">\\2</a>", $_GET['written'] );

include ("config.php");
$db = mysql_connect("$server","$userid","$pw");
mysql_select_db("$dbase",$db);

$nyhed_dato=date("d.m.Y");
echo "Et øjeblik..<br><br>";
mysql_query ("INSERT INTO news (dato, overskrift, tekst) VALUES ('$nyhed_dato','$head','$text')") ;
echo "Gennemført";
echo "<script>window.location.href='newsadmin.php'</script>";


?>
</BODY>
</HTML>
Avatar billede coderdk Praktikant
11. august 2004 - 19:36 #33
Du smider $text ind og ikke $skrevet ;)

mysql_query ("INSERT INTO news (dato, overskrift, tekst) VALUES ('$nyhed_dato','$head','$text')") ;

ret den til:

mysql_query ("INSERT INTO news (dato, overskrift, tekst) VALUES ('$nyhed_dato','$head','$skrevet')") ;
Avatar billede Slettet bruger
11. august 2004 - 19:40 #34
nej nu ved jeg da hvorfor

$skrevet = hvem der har lavet nyheden
$text = teksten

Det er en fejl herfra
Avatar billede coderdk Praktikant
11. august 2004 - 19:41 #35
:)
Avatar billede Slettet bruger
11. august 2004 - 19:42 #36
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/web/web8411/addnews2.php on line 20

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/web/web8411/addnews2.php on line 20

Parse error: parse error, unexpected T_LNUMBER in /home/web/web8411/addnews2.php on line 20

Denne fejl igen

$text = preg_replace( "/\[a link=\"(.*?)\"\](.*?)\[\/a\]/si", "<a href="\\1">\\2</a>", $_POST['tekst'] );

^ linie 20 ^
Avatar billede coderdk Praktikant
11. august 2004 - 19:44 #37
Du har igen taget den gamle.

Se min kommentar fra 11/08-2004 14:18:10 og udskift $skrevet med $text...
Avatar billede Slettet bruger
11. august 2004 - 19:51 #38
Avatar billede coderdk Praktikant
11. august 2004 - 19:56 #39
Smid koden igen
Avatar billede Slettet bruger
11. august 2004 - 19:59 #40
<?PHP
session_start();
$sessid = session_id();
include ("config.php");
    $db = mysql_connect("$server","$userid","$pw");
    mysql_select_db("$dbase",$db);
$getindlaeg=mysql_query("SELECT * FROM `login` ORDER BY 1 DESC",$db);
while ($liste=mysql_fetch_row($getindlaeg)) {
if ($sessid != $liste[2]) {
echo "<script>parent.location.href='login.php'</script>";
}
}
?>

<HTML>
<BODY BGCOLOR="#f0f0f0">

<?PHP
$head = $_POST['overskrift'];
$text = preg_replace( "/\[a link=\"(.*?)\"\](.*?)\[\/a\]/si", '<a href="\\1">\\2</a>', $_POST['tekst'] );
$skrevet = $_POST['written'];

include ("config.php");
$db = mysql_connect("$server","$userid","$pw");
mysql_select_db("$dbase",$db);

$nyhed_dato=date("d.m.Y");
echo "Et øjeblik..<br><br>";
mysql_query ("INSERT INTO news (dato, overskrift, tekst) VALUES ('$nyhed_dato','$head','$text')") ;
echo "Gennemført";
echo "<script>window.location.href='newsadmin.php'</script>";


?>
</BODY>
</HTML>
Avatar billede coderdk Praktikant
11. august 2004 - 20:28 #41
Jeg ved ikke hvad den laver, dette eksempel virker, og det ser helt ud som din kode:

<?php

    $text = <<<STOP

Sidste gang!

[a link="http://www.wollsen.com"]Wolle's side[/a]

NÅ!


STOP;

    $text = preg_replace( "/\[a link=\"(.*?)\"\](.*?)\[\/a\]/si", '<a href="\\1">\\2</a>', $text );
    echo nl2br( $text );
   
?>
Avatar billede Slettet bruger
11. august 2004 - 20:33 #42
hvad mener du med det der?
Avatar billede coderdk Praktikant
11. august 2004 - 20:47 #43
Jeg mener efter hvad jeg kan se af din kode, så burde det virke. For det eksempel jeg lige har lavet, gør nøjagtigt det samme - og det virker fint...
Altså: Det du har lavet burde virke!
Avatar billede Slettet bruger
11. august 2004 - 21:06 #44
Så vidt jeg kan se på det der så gør du det der på siden hvor det bliver hentet?
Avatar billede coderdk Praktikant
11. august 2004 - 21:34 #45
Jep, men det spiller jo ingen rolle, du kan sagtens gemme det før og så vise det der er gemt, samme resultat :)
Avatar billede Slettet bruger
12. august 2004 - 07:59 #46
okay. Tak for hjælpen jeg vil bare prøve mig lidt frem ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester