🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.ruby
6 messages
6 total messages Started by Szymon Bęczkowski Thu, 06 Jul 2006 15:40
Jak wyciągnąć fragment stringa?
#18
Author: Szymon Bęczkowski
Date: Thu, 06 Jul 2006 15:40
8 lines
1001 bytes
Mam w stringu kod html. [p]Jakiś  
paragraf[b]glup[/b][/p][li]...[/li][p]Drugi paragraf[/p] 1i chciałbym z  
niego wydobyć pierwszy element (w tym przypadku paragraf). Problem jest  
taki, ze w tym pierwszym paragrafie mogą być zagnieżdżone inne elementy.  
Jak w miare prosto to zrobić?

-- 
Szymon Bęczkowski
Re: Jak wyciągnąć fragment stringa?
#19
Author: Marcin Mielżyński
Date: Thu, 06 Jul 2006 19:36
13 lines
1331 bytes
Szymon Bęczkowski wrote:
> Mam w stringu kod html. [p]Jakiś 
> paragraf[b]glup[/b][/p][li]...[/li][p]Drugi paragraf[/p] 1i chciałbym z 
> niego wydobyć pierwszy element (w tym przypadku paragraf). Problem jest 
> taki, ze w tym pierwszym paragrafie mogą być zagnieżdżone inne elementy. 
> Jak w miare prosto to zrobić?


jeśli paragrafy nie będą się zagnieżdżały to po prostu:

"[p]Jakiś paragraf[b]glup[/b][/p][li]"[/\[p\](.*?)\[\/p\]/,1]

lopex
Re: Jak wyciągnąć fragment stringa?
#20
Author: Aleksander Janeczko
Date: Fri, 07 Jul 2006 07:53
25 lines
1788 bytes
Witam!

> jeśli paragrafy nie będą się zagnieżdżały to po prostu:
>
> "[p]Jakiś paragraf[b]glup[/b][/p][li]"[/\[p\](.*?)\[\/p\]/,1]

Piąty wątek na całej grupie i opisuje dokładnie mój przypadek. :)
Też staram się napisać konwerter BBCode -> XHTML, ale z wymaganą
poprawnością składniową XML.

Najlepiej chyba jest rozbić cały ciąg na tablicę węzłów-dzieci,
tak aby:

'a[b]b[/b]c'.something => ['a', '[b]b[/b]', 'c']
'a[i]b[b]c[/i]d[/b]e.something => ['a[i]b[b]c[/i]d[/b]e']

I w zależności od zawartości każdego elementu tablicy
przepuszczać go do zwracanego ciągu lub zamieniać znacznik
BBCode na XHTML i (jeżeli zawiera kolejne elementy) wywoływać
na nim ponownie tę samą metodę rozbijania na dzieci...

Ale jak wykonać krok pierwszy?
Tzn. jak powinno wyglądać something? :)

- Vinyanov
Re: Jak wyciągnąć fragment stringa?
#21
Author: Michal Kwiatkowski
Date: Fri, 07 Jul 2006 09:24
39 lines
2386 bytes
Aleksander Janeczko wrote:
>> jeśli paragrafy nie będą się zagnieżdżały to po prostu:
>>
>> "[p]Jakiś paragraf[b]glup[/b][/p][li]"[/\[p\](.*?)\[\/p\]/,1]
> 
> Piąty wątek na całej grupie i opisuje dokładnie mój przypadek. :)
> Też staram się napisać konwerter BBCode -> XHTML, ale z wymaganą
> poprawnością składniową XML.
> 
> Najlepiej chyba jest rozbić cały ciąg na tablicę węzłów-dzieci,
> tak aby:
> 
> 'a[b]b[/b]c'.something => ['a', '[b]b[/b]', 'c']
> 'a[i]b[b]c[/i]d[/b]e.something => ['a[i]b[b]c[/i]d[/b]e']

Tego przykładu nie rozumiem. Ale ogólnie, skoro akceptujemy źle
zagnieżdżone znaczniki (tak jak w Twoim drugim przykładzie), to nie ma
co rozbijać, lepiej chyba zrobić zwykłe tłumaczenie poszczególnych
elementów zawartych w nawiasach kwadratowych, bez rozkładania ich
struktury.

> I w zależności od zawartości każdego elementu tablicy
> przepuszczać go do zwracanego ciągu lub zamieniać znacznik
> BBCode na XHTML i (jeżeli zawiera kolejne elementy) wywoływać
> na nim ponownie tę samą metodę rozbijania na dzieci...
> 
> Ale jak wykonać krok pierwszy?
> Tzn. jak powinno wyglądać something? :)

Przy opracowywaniu tego można oprzeć się na już istniejącym rozwiązaniu.
Na przykład tutaj: http://bbcode.strefaphp.net/opis.php dostępne są
gotowe wyrażenia regularne, wystarczy je pożyczyć.

Pozdrawiam,
mk
-- 
 . o .       >>  http://joker.linuxstuff.pl  <<
 . . o   It's easier to get forgiveness for being wrong
 o o o   than forgiveness for being right.
Re: Jak wyciągnąć fragment stringa?
#22
Author: Marcin Mielżyński
Date: Fri, 07 Jul 2006 09:34
6 lines
1071 bytes
gem install calibre

http://gemjack.com/gems/calibre-1.2.0/classes/BBCode.html


lopex
Re: Jak wyciągnąć fragment stringa?
#23
Author: Szymon Bęczkowski
Date: Fri, 07 Jul 2006 11:23
10 lines
1082 bytes
On Thu, 06 Jul 2006 21:36:04 +0200, Marcin Mielżyński <lopx@gazeta.pl>  
wrote:

> jeśli paragrafy nie będą się zagnieżdżały to po prostu:
>  "[p]Jakiś paragraf[b]glup[/b][/p][li]"[/\[p\](.*?)\[\/p\]/,1]

Działa, dzięki. Przejrzałem dokumentację do MatchData i już wiem co i jak.

-- 
Szymon Bęczkowski
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads