Demo

Probiere ClanSphere aus und teste daran herum. Demo


Antworten: 6
Seite [1]
ev0lution


Geekboy





Beiträge: 1102
# Thema - 05.07.2011 um 12:17 Uhr
Hi

ich habe das Problem das ich folgendes sehe wenn ich im nachrichtenmodul merhfach ne massage beantworte und der verlauf im klapptext zu sehen ist.

gibts da auch schon ein fix ?


------------------
Inaktiv
cbw.lava


Rock the board





Beiträge: 63
# Antwort: 1 - 05.07.2011 um 14:32 Uhr
In system/core/abcode.php folgendes ersetzen:

In der Funktion cs_abcode_clip:
 
1.
1. / 2. / ... 
 $var .= '<div>' $matches[2] . '</div>';

durch
 
1.
1. / 2. / ... 
 $var .= '<div>' preg_replace_callback("=\[clip\=(.*?)\](.*)\[/clip\]=si","cs_abcode_clip",$matches[2]) . '</div>';


In der Funktion cs_secure:
 
1.
1. / 2. / ... 
 $replace preg_replace_callback("=\[clip\=(.*?)\](.*?)\[/clip\]=si","cs_abcode_clip",$replace);

durch
 
1.
1. / 2. / ... 
 $replace preg_replace_callback("=\[clip\=(.*?)\](.*)\[/clip\]=si","cs_abcode_clip",$replace);


Inaktiv
|
hajo ClanSphere Team


VIP - Poster




Herkunft: Barsbüttel
Beiträge: 9411
# Antwort: 2 - 05.07.2011 um 15:42 Uhr
ist der bug noch in csp enthalten? wo ist das ticket dazu?


------------------
ClanSphere - professional clan care starts here

Inaktiv
|
SCHIRI ClanSphere Team


Weltmeister



Herkunft: Hamburg
Beiträge: 5299
# Antwort: 3 - 05.07.2011 um 17:58 Uhr
Ich bin mir (ohne es getestet zu haben) nicht sicher ob der Fix funktioniert. Mit der Änderung müsste es zu Fehlern kommen, wemm man zwei Clips hintereinander packt:

[.clip=mehr... #1] blabla[/clip]

Hier villeicht noch etwas Text

[.clip=mehr... #2] blabla[/clip]


------------------
www.laszlokorte.de

Inaktiv
|
cbw.lava


Rock the board





Beiträge: 63
# Antwort: 4 - 05.07.2011 um 19:07 Uhr
@SCHIRI: Das stimmt leider ^^
Eine bessere Lösung muss also noch gefunden werden.


Inaktiv
|
SCHIRI ClanSphere Team


Weltmeister



Herkunft: Hamburg
Beiträge: 5299
# Antwort: 5 - 05.07.2011 um 19:15 Uhr
Allgemein ist es schwer bis unmögliche solche Verschachtelungen mit Regulären ausdrücken abzubilden.
Wenn ich mich richtig erinnere kann man mit der "?R" Syntax innerhalb eines regulären Ausdrucks eine Rekursion herstellen, aber erst ab php5.2 und ein so toll Lösung ist das auch nicht.
Im Prinzip bräuchte man hier einen Tokenizer, wie Hajo ihn vor einem Jahr auch schon in die Template-Engine eingebaut hat.


------------------
www.laszlokorte.de

Inaktiv
|
cbw.lava


Rock the board





Beiträge: 63
# Antwort: 6 - 05.07.2011 um 20:21 Uhr
Zu regulären Ausdrücken fällt mir ein englisches Zitat ein das hier passt, sinngemäß übsersetzt „Der Versuch, ein Problem mit regulären Ausdrücken zu lösen, kann dazu führen, dass man nun zwei Probleme hat“
Ein Tokenizer wäre sicherlich die sauberste Lösung. Interim könnte man zumindest ein paar Schachtelungsfehler vermeiden:

system/core/abcode.php, function cs_abcode_clip:
 
1.
2.
3.
4.
5.
6.
7.
8.
9.
1. / 2. / ... 
 function cs_abcode_clip2($matches) {

  
$var '<a class="clip" href="#">' $matches[1] . ' ';
  
$var .= cs_html_img('symbols/clansphere/plus.gif',0,0,0,'+');
  
$var .= cs_html_img('symbols/clansphere/minus.gif',0,0,'style="display:none"','-');
  
$var .= '</a>';
  
$var .= '<div>';
  return 
$var;
}


system/core/abcode.php, function cs_secure:
 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1. / 2. / ... 
 
...
if(!empty(
$clip)) {
  
$clip_open_count preg_match_all("=\[clip\=.*?\]=si"$replace$clip_open);
  
$clip_close_count preg_match_all("=\[/clip\]=si"$replace$clip_close);
  
$clip_limit min($clip_open_count$clip_close_count);
  
$replace preg_replace_callback("=\[clip\=(.*?)\]=si""cs_abcode_clip2"$replace$clip_limit);
  
$replace str_ireplace("[/clip]""</div>"$replace$clip_limit);
}
...


Sowas wie [ /clip ] ... [ clip=... ] führt dann zwar immer noch zu inkorrekter Verschachtelung, wäre als Übergangslösung aber evtl. verschmerzbar...?


Inaktiv
|
Antworten: 6
Seite [1]


Sie müssen sich registrieren, um zu antworten.