jorgis Skrevet 17. februar 2004 Del Skrevet 17. februar 2004 Jeg holder på med en BBCode-greie til et newsskript jeg mekker, og for å få URL-taggen til å funke, må jeg kunne finne punkter i variabelen som er input fra bruker. I vanlig BBCode, er syntaks for URL-tag slik: [url=http://www.ensidepåinternett.com]Dette er linktekst[/url] Jeg er nødt til å hente ut alt som er mellom = og ]. Dette skal "oversettes" videre med en str_replace, slik at det blir dugelig HTML ut av det. Spørsmålet er bare hvordan jeg kan finne teksten mellom de spesielle punktene. Lenke til kommentar
Torbjørn Skrevet 18. februar 2004 Del Skrevet 18. februar 2004 ta en titt på denne funksjonen Lenke til kommentar
jorgis Skrevet 18. februar 2004 Forfatter Del Skrevet 18. februar 2004 Poenget er at jeg ikke skal erstatte spesifikke punkter i variabelen, men finne punktene uten å vite hvor. Jeg skal finne det som er mellom = og ], men det er ikke nøyaktig det samme hver gang. En annen mulighet kunne vært å erstattet (via str_replace()) ] med "> , men det går ikke, siden det er _mange_ ] i input-variabelen. Anyone? Lenke til kommentar
The Red Devil Skrevet 18. februar 2004 Del Skrevet 18. februar 2004 Du kan bruke denne kode snutten: $news = preg_replace("/\[url=([a-z]+?:\/\/)(.*?)\](.*?)\[\/url\]/", "<a href=\"\\1\\2\" target=\"_blank\">\\3</a>", $news); Forandr $news med den variablen som inneholder teksten du skal sjekke. Det er lenge siden eg skreiv bb til newsscriptet mitt, men vist eg husker rett så er koden inne i kvar () det som blir hentet ut som \1 osv etter kor den er plassert. Lenke til kommentar
jorgis Skrevet 18. februar 2004 Forfatter Del Skrevet 18. februar 2004 Takk. Nå funket det helt perfekt. Er bare en liten detalj igjen før alt fungerer 100%: Hvordan gjør jeg slik at BBcode ikke er case-sensitiv? Lenke til kommentar
The Red Devil Skrevet 18. februar 2004 Del Skrevet 18. februar 2004 Du må bruke "eregi_replace" då trur eg. Lenke til kommentar
jorgis Skrevet 18. februar 2004 Forfatter Del Skrevet 18. februar 2004 Du må bruke "eregi_replace" då trur eg. Kan det brukes på samme måte som preg_replace()? Lenke til kommentar
Torbjørn Skrevet 18. februar 2004 Del Skrevet 18. februar 2004 nei, men sleng på i etter søkemønsteret, mao /mønster/i les mer her: http://no2.php.net/manual/en/pcre.pattern.modifiers.php Lenke til kommentar
jorgis Skrevet 18. februar 2004 Forfatter Del Skrevet 18. februar 2004 Takk. Nå funker det fett. Lenke til kommentar
jorgis Skrevet 18. februar 2004 Forfatter Del Skrevet 18. februar 2004 Greitt... Har enda et par problemer: Her er en link til hvordan det ser ut nå. Tekstformatering funker fint, og det å sette inn smileys ved å klikke på dem funker også. Problem nr. 1 er at smileyene fyller opp den skulte div'en, og gjør det ganske rotete. Jeg vil begrense det til 4 smileys per rad, men hvordan? Koden for å hente ut smileyer fra mappe og mekke linker ser slik ut: <?php if ($handle = opendir('smileys')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $filnavn = str_replace(".gif","",$file); // stripper vekk filendelsen $filnavn = str_replace("$filnavn",":$filnavn:",$filnavn); //legger til : på hver side echo '<img src="smileys/'. urlencode($file) . '" onClick="emoticon(\'' . $filnavn . '\')"></a> '; // "knapp" for å sette inn BB'en } } closedir($handle); } ?> Problem nr. 2 er når jeg skal "parse" BB-kodene. Jeg har to arrays, ett med BB-koder, og ett med erstatningene til BB-kodene. Hvordan skal jeg få alle verdiene til de forskjellige smileyene inn i arrayet uten å skrive det manuelt? Hovedkraften til skriptet er nemlig at du ikke må gjøre noe for å legge til en ny smiley. Lenke til kommentar
jorgis Skrevet 18. februar 2004 Forfatter Del Skrevet 18. februar 2004 Problem nr. 1 er nå løst. Sliter fremdeles med problem 2. Noen som kan hjelpe? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå