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

regexp för egen BB-kod

Rekommendera Poster

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>]

Dela detta inlägg


Länk till inlägg
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.

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

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?

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...