Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> własny BBCode
Denver
post
Post #1





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 24.09.2003
Skąd: Giżycko / Wrocław

Ostrzeżenie: (0%)
-----


Witam. Mam problem z napisaniem zamieniania w php [quote=xywka] na cos innego.

Mam taki kod:

[php:1:6f190360cc]<?php
$text = preg_replace("#[quote=(.+)](.+)[/quote]#", "[Q]1[/Q]", $text);
?>[/php:1:6f190360cc]

Nie zawsze jednak działa.
Np. przy takim tekście:

Kod
[quote=Denver]cośtam....[/quote]





[quote=Denver]

cośtam....

[quote=Denver]blablabla[/quote]

blablabla

[/quote]



blablabla


Nie zostają zastąpione wszystkie znaczniki, rezultatem jest:

Kod
[Q]Denver[/Q]





[quote=Denver]

cośtam....

[Q]Denver[/Q]

blablabla

[/quote]



blablabla


Dlaczego? Co zrobić, aby także zagnieżdżane znaczniki (takie jak w przykladzie powyzej) zostaly wziete pod uwage?

Z gory dzieki.
Go to the top of the page
+Quote Post
bamboos
post
Post #2





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 3.05.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


witam:)
'#[twoje wyrazenie]#m'
chodzi o to m smile.gif tzn zeby wykrywal wielolinijkowe (multi lines) tak mi sie wydaje


--------------------
Go to the top of the page
+Quote Post
Denver
post
Post #3





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 24.09.2003
Skąd: Giżycko / Wrocław

Ostrzeżenie: (0%)
-----


Niestety, dodanie m po wyrazeniu nic nie dalo... nadal zagniezdzone quote nie są wykrywane sad.gif

Robil ktos moze cos podobnego kiedys?
Go to the top of the page
+Quote Post
bamboos
post
Post #4





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 3.05.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witam!!!
sorry .. moj blad smile.gif zamiast 'm' wstaw 's' smile.gif


--------------------
Go to the top of the page
+Quote Post
Denver
post
Post #5





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 24.09.2003
Skąd: Giżycko / Wrocław

Ostrzeżenie: (0%)
-----


bamboos - nawet 's' nie pomogło. poradziłem sobie w taki, dosyć zawiły sposób:

[php:1:104b7dc522]$quote_replacement = "[Q=1]2[/Q]";
$text = preg_replace("#
Cytat((.*?))
(.*?)
#sm", $quote_replacement, $text);
while (eregi ("
Cytat((.+))
(.+)
", $text)) {
$text = preg_replace("#
Cytat((.*?))
(.*?)
#sm",$quote_replacement, $text);
}[/php:1:104b7dc522]

oczywiscie zmienna $quote_replacement jest w rzeczywistosci inna i zawiera tabelkę obejmującą cytowaną wypowiedź...

dzięki bamboos za chęć pomocy.
Go to the top of the page
+Quote Post
bamboos
post
Post #6





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 3.05.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witam!!
mi dziala bez problemu:
[php:1:552cf7d62e]<?php
$str = '[quote=asdf] asdf
asdf
adsdf
[/quote]';
$str = preg_replace('/[quote=(.+?)](.+?)[/quote]/s', '[q=1]2[/q]', $str);
echo $str;
?>[/php:1:552cf7d62e]
sprawdz to jeszcze raz smile.gif

-----------EDIT-----------

przy [/quote] nie masz '' przed '/'.. to moglo powodowac blad ?!? 8O


--------------------
Go to the top of the page
+Quote Post
Denver
post
Post #7





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 24.09.2003
Skąd: Giżycko / Wrocław

Ostrzeżenie: (0%)
-----


Mowilem wyraznie, ze ten kod nie dziala w zagniezdzonych cytatach, czyli w cytatach cytatów. Sprawdz sam. Moj skrypt dziala w tym przypadku dobrze smile.gif
Go to the top of the page
+Quote Post
bamboos
post
Post #8





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 3.05.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witam ... ponownie smile.gif)!!
sorr .. nie testowalem w zagniezdzonych smile.gif
to powinno dzialac w zagniezdzonych (i jest troche wydajniejsze:) ) tzn pozbywasz sie ereg i preg_replace z petli i samej petli:
[php:1:471270d6d1]<?php
$str = '
Cytat(bamboos)
pierwsze
quote
Cytat(test)
a to  
jest quote w quote

koniec testu smile.gif
';
$str = preg_replace('/
Cytat((.+?))
/', '<q=1>', preg_replace('/
/', '</q>', $str));
echo $str;
?>[/php:1:471270d6d1]
i sorry za zamieszanie smile.gif


--------------------
Go to the top of the page
+Quote Post
Denver
post
Post #9





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 24.09.2003
Skąd: Giżycko / Wrocław

Ostrzeżenie: (0%)
-----


Twój kod tym razem działa, ale problem pojawia się w momencie, gdy jakiś tag quote nie zostanie zamknięty... w tym momencie, gdy ja to zamieniam na tabelki, to pochrzani się dalsza struktura forum, nie tylko posta.

Nadal jestem przy swoim smile.gif


#edit

ciekaw jestem jak to jest na tym forum: wstawię tutaj 2 tagi otwarcia cytatu, a 4 zamknicia:

[quote]
1 cytat
[quote]
2cytat
[/quote]
[/quote]

[/quote][/quote]

#edit2

jak widać, opuszcza 2 tagi zamykajace, tak jak moj skrypt.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 16:52