Just nu i M3-nätverket
Gå till innehåll

regexp för egen BB-kod


Daniel Wahlgren

Rekommendera Poster

Daniel Wahlgren

Tjenare. Jag har lite problem med att fixa min kod-ruta för bbkod.

 

koden som användaren matar in är:

 

[code="Java"]public [color="#0000ff"]class[/color] HelloWorld{
        public [color="#0000ff"]static[/color] [color="#0000ff"]void[/color] [color="#ff0000"]main[/color]([color="#0000ff"]string[/color][] args){
                [color="#ff0000"]system[/color].out.println("Hello World");
        }
}

[/code]

 

Eftersom jag sist av allt kör en nl2br() så blir det jättefel. Det presenteras då som:

 

public [color="#0000ff"]class[/color] HelloWorld{

        public [color="#0000ff"]static[/color] [color="#0000ff"]void[/color] [color="#ff0000"]main[/color]([color="#0000ff"]string[/color][] args){

                [color="#ff0000"]system[/color].out.println("Hello World");

        }

}

 

Koden visas i en div med white-space: pre;

 

koden jag kör nu är:

	$content = [color="#ff0000"]preg_replace[/color]( "/\[code=\"(.*?)\"\](.*?)\[\/code\]/s", "<span id=\"codespan\">$1:</span><div id=\"code\">$2</div>", $content);

 

vad jag vill ha för resultat är egentligen inte tabbar, utan tre mellanslag. Texten skall wrappas.

 

CSS-koden är:

[color="#006400"]#code {[/color]
   padding: 5px;
   border: [color="#006400"]#d1d7dc 1px solid;[/color]
   color: [color="#006400"]#006600;[/color]
   font: normal 8pt courier, 'courier [color="#0000ff"]new[/color]', monospace;
   background-color: [color="#006400"]#fafafa;[/color]
   white-space: pre;
}

 

**********

Om spelvåld påverkar unga, hur skulle pacmangenerationen se ut idag?

 

[inlägget ändrat 2005-10-13 13:02:51 av <a href="http://www.tadasweden.com">TaDaSweden</a>]

Länk till kommentar
Dela på andra webbplatser

Inte alls ett svar på din fråga men vad försöker du åstadkomma med konstruktionen (.*?)?

 

Det är antagligen rätt lätt att se vad det är för fel som gör att du får dubbla vagnreturer om du kan lägga lite kod och ett exempel någonstans. Det enda vi vet efter att ha läst ditt inlägg är att du vid något tillfälle ropar på nl2br(), inte med vilken indata eller hur resultatet ser ut.

 

 

Länk till kommentar
Dela på andra webbplatser

Daniel Wahlgren

Jag löste det genom att ta bort white-space: pre.

Jag tog bort nl2br, och ersatte med ett regexp som jag skall försöka fixa så det gör som jag vill.

 

Indata:

[code]public [color="#0000ff"]class[/color] HelloWorld{
public [color="#0000ff"]static[/color] [color="#0000ff"]void[/color] [color="#ff0000"]main[/color]([color="#0000ff"]string[/color][] args){
	[color="#ff0000"]system[/color].out.println("Hello World");
}
}

[/code]

 

kod:

$content = [color="#ff0000"]preg_replace[/color]( "/\[code\](.*?)\[\/code\]/s", "<span id=\"codespan\">{CODE}</span><div id=\"code\">$1</div>", $content);
$content = [color="#ff0000"]preg_replace[/color]("/(\n)/","<br>",$content);
$content = [color="#ff0000"]preg_replace[/color]("/(\t)/","&nbsp;&nbsp;&nbsp;",$content);

 

resultat:

<span id="codespan">Programkod</span><div id="code">public [color="#0000ff"]class[/color] HelloWorld{
<br>&nbsp;&nbsp;&nbsp;public [color="#0000ff"]static[/color] [color="#0000ff"]void[/color] [color="#ff0000"]main[/color]([color="#0000ff"]string[/color][] args){
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[color="#ff0000"]system[/color].out.println("Hello World");
<br>&nbsp;&nbsp;&nbsp;}
<br>}</div>

 

Detta är jättebra. men jag har även taggar där det inte får finnas <br>

 

exempel på det är

[ul]
[li]Röd[/li]
[li]Grön[/li]
[li]Blå[/li]
[/ul]

ingen av dessa rader skall ha <br>, men hur skall jag fixa min regexp ovan för <br> att hoppa över dessa rader? Om innehållet i en [li][/li] radbyter skall det dock in en <br>

 

(.*?) fick jag via copy/paste. Kan inte speciellt mycket om regexp, så jag hankar mig fram.

**********

Om spelvåld påverkar unga, hur skulle pacmangenerationen se ut idag?

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...