04. juli 2005 - 16:04Der er
8 kommentarer og 1 løsning
Indsæt efter X antal linjer tekst
Nogle der har en god ide til hvordan man kan lave noget php, så jeg kan vælge at indsætte en tekst efter X antal linjer.
Min tekst er f.eks. sådan: ------------ bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla <---- indsæt her bla bla bla bla bla bla bla bla bla bla bla bla bla bla <---- indsæt måske her bla bla bla bla bla bla bla bla bla bla bla bla bla bla -----------
Skal det være for hver 3. linie hver gang, eller hvad? Og hvor kommer de linier fra, bliver de kørt i en løkke? Hvis de køres i en løkke, så kan du jo sagtens bare smide en tæller på, f.eks.:
$i = 0; while( - det der nu skal ske -) { if($i == 2) echo "tekst1"; elseif($i == 5) echo "tekst2"; - og hvad der så ellers skal ske }
eller, hvis det skal være fast hver 2. linie, tror jeg du kan:
$i = 0; while( ) { if(($i%2) == 0) echo "teksten"; - og hvad der så ellers skal ske }
Det skal være efter et antal linjer som jeg selv definerer fx: $linje = "10";
Jeg skulle måske også have nævnt at teksten kommer ud af mysql som ren tekst, hvorefter jeg laver nl2br() og nogle andre ting på den, så jeg får den som en variabel, fx. $artikel
Jeps, og hvis du så gør det, hvordan vil du så have at den skal kunne indsætte efter 10 linier? Antallet af linier afhænger vel af, hvordan brugeren har sin maskine opsat mht. opløsning etc.?
Hvis det skal være efter x-antal linier (rækker) fra databasen, så bør mit tidligere forsøg du'.
Jeg tager den lige helt fra starten, jeg tror vi snakker lidt forbi hinanden.
Jeg har en mysql database med en masse artikler i. Hver artikel ligger i en række i databasen, der indeholder id, overskrift, selve artiklen og nogle andre ting.
Når jeg henter en artikel ud får jeg den som f.eks. $row[artikel]. Denne variabel indeholder så hele artiklen (typisk på omkring 30-40 linjer), jeg vil så kunne indsætte en tekst/reklame eller hvad jeg nu vil, efter f.eks. 10 linjer.
Det skal så helst kunne laves automatisk, da jeg ikke rigtig gider at sidde og opdele 100-vis af artikler i database i 2 stykker.
Så jeg tror ikke løkken kan bruges, da hele artiklen ligger i en enkelt variabel, og derfor vil løkken kun blive kørt en gang.
Ellers skulle man måske splitte hele artiklen op i linjer og indsætte den i en array, og så køre løkken. Det virker bare så besværligt.
Ja okey, vi snakkede ikke forbi hinanden egentlig, jeg håbede bare det ikke var sådan du havde tænkt dig :)
For som du har nu, bliver det svært, da det - som tidligere nævnt - afhænger af brugerens opsætning hvor meget det fylder. Noget der fylder 10 linier på din skærm, kan jo sagtens fylde 15 på min, og det kan php ikke tage hensyn til. Det du måske kan er at bruge antal tegn, men det bliver nok også lidt bøvlet... Generelt tror jeg ikke, det vil blive særlig pænt, for selvom du tager antal tegn, så kommer det aldrig til at passe med slutningen af en sætning, medmindre du opdeler sætningen ved hvert punktum...
Men hvad så hvis jeg vil gøre det efter f.eks. 2. nye afsnit. Et nyt afsnit er lavet ved: bla bla bla bla bla bla bla bla
bla bla bla bla bla bla bla bla ------- Altså et ekstra mellemrum. Jeg har prøvet noget str_replace("\n\n", "ny tekst", $row[artikel]), men det vil den ikke rigtigt. Har også prøvet forskellige variationer med \n\r og omvendt.
Er kommet lidt længere, dette indsætter efter nyt afsnit: $artikel = nl2br($artikel); $artikel = str_replace("\n","", $artikel); $artikel = str_replace("\r","", $artikel);
$artikel = str_replace("<br /><br />","<br><br>NY TEKST<br><br>", $artikel); --------- Problemet er nu, at den kun gør det hele vejen ned, det tror jeg dog godt jeg selv kan ordne.
Så virker det, skriver lige koden hvis andre har samme problem, den indsætter efter 2. afsnit her: ---------------- $artikel = nl2br($artikel); $artikel = str_replace("\n","", $artikel); $artikel = str_replace("\r","", $artikel);
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.