$str = preg_replace("/\\[[^\\]]*\\]/", "", $str);
EDIT:
Irriterande att forumet plockar bort de backslashes jag skriver...
4 svar · 332 visningar · startad av peterpops
Öhm, väldigt dålig rubrik känner jag, fast kommer inte på något annat.
Jo, jag har en sträng som kan se ut som följande:
[b  b4af7eb157][color  blue  b4af7eb157]Nisses[  color  b4af7eb157][  b  b4af7eb157] s BMW är finast,[b  b4af7eb157][color  blue  b4af7eb157]Johan[  color  b4af7eb157][  b  b4af7eb157] s BMW   är grå!
Jag vill nu "ta bort" /ersätta alla tecken i denna strängen som finns i emellan tecknen [ och ], så att exemplet ovan ENDAST skriver ut detta istället:
Nisses BMW är finast, Johans BMW är grå!
Har försökt, sök på forumet, php-manualen etc. utan framgång. Jag är inte speciellt haj på det här med regular expressions och allt vad det heter, som jag misstänker kan hjälpa till här.
Ytterst tacksam för svar.
Och tack för ett ovärderligt forum! :birp
$str = preg_replace("/\\[[^\\]]*\\]/", "", $str);
EDIT:
Irriterande att forumet plockar bort de backslashes jag skriver...
ovanståeende rader fungerade alldelles utmärkt. Tackar så mycket.
Skulle gärna, om någon har lust att ta sig tid, få ovanståeende strängar förklarade, som en liten introduktion till reg. exp.
Gärna lite guider till sidor om reg. exp. också så man slipper ställa sådana här pinsamma frågor i fortsättningen. :r
Först en liten förbättring om du skulle ha radbrytning inom dina hakparenteser:
$str = preg_replace("/\\[.*?]/s", "", $str);
Hakparenteser [ och ] (i kombination med varandra) är normalt Metatecken i det reguljära uttrycket, så därför sätter man ett backslash framför (escape-tecken) för att det verkligen ska betyda bokstavligen tecknet [.
. är nästan vilket tecken som helst.
* betyder 0 (noll) eller flera, i det här fallet av vilket tecken som helst.
? betyder normalt noll eller ett, men i det här fallet så betyder det att uttrycket inte ska vara girigt. Utan frågetecknet så hade allt till sista ] i strängen tagits bort.
Hade man inte använt frågetecknet hade man istället kunnat skriva:
$str = preg_replace("/\\[.*]/sU", "", $str);
Där U-et hade betytt att inte vara girig (ungreedy).
Växeln s betyder att även radbyte ska tas med som vilket tecken som helst.
/ i början och slutet är begränsningstecken för uttrycket.
Du kan läsa mer om det här:
http://se.php.net/manual/en/pcre.pattern.syntax.php
http://se.php.net/manual/en/pcre.pattern.modifiers.php