2016-06-02 8 views
1

Die Idee ist es, die ersten 80 Zeichen des Benutzerbeitrags in einem Übersichtsmodus sichtbar zu machen. Aber wie mache ich das mit bbtags?Wie bekomme ich eine gültige Teilzeichenkette von BBCode nach

  • wie nicht-String in der Mitte des bbtag
  • , wie man nicht nur offen Tag zu schneiden.
  • Ich kann nicht nur die Tags ignorieren, weil einer von ihnen Spoiler :-) ist

Ich habe absolut keine Ahnung, (i einfache Formatierung ignorieren könnte), wie es geht und schnell googeln nicht helfen.

Beispiel:

Darth Vader [spoiler]is father of luke skywalker[/spoiler] 

Wenn ich will String von 20 Zeichen, ich würde das wollen:

Darth Vader [spoiler]is fathe[/spoiler] 
+0

Sie könnten ein Beispiel in Ihrer Antwort hinzufügen? Ich habe nicht verstanden, welche Ergebnisse du wartest. –

+0

@MaximTkach - Beispiel hinzugefügt – Gonzi

Antwort

1

Vielleicht diesen Code Ihnen helfen, sollte es weiterentwickelt werden, aber die Idee sollte sein klar:

$str = 'Darth Vader [spoiler]is father of luke skywalker[/spoiler]'; 

function parse($str, $count) 
{ 
    $arr1 = str_split($str); 
    $result = []; 
    $i = 0; 
    $open = false; 
    foreach ($arr1 as $chr) 
    { 
     if ($open || $chr === '[') 
     { 
      $open = true; 
      if ($chr === ']') 
      { 
       $result[] = $chr; 
       $open = false; 
      } 
      else 
      { 
       $result[] = $chr; 
      } 
     } 
     elseif($i <= $count) 
     { 
      $result[] = $chr; 
      $i++; 
     } 
    } 
    return implode($result); 
} 
echo parse($str, 20); 

Sie Code neu schreiben müssen, und Test mit diesem Fall: "] [" und "[] [[[[[]]] [[]] [[[["

Oder wählen Sie einen anderen Algorithmus, und verwenden Sie regex ....

Verwandte Themen