login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Quote in BB

Offline Voldemort - 17/07/2006 18:43 (laatste wijziging 17/07/2006 18:44)
Avatar van VoldemortPHP ver gevorderde Ik gebruik de BB parser van Dolfje uit de BB-code battle. Alleen werkt de quote functie niet naar behoren. 2 quotes in elkaar:

  1. [quote]
  2. [quote]Iets[/quote]
  3. Iets
  4. [/quote]


Geeft ([OPMAAKDINGEN] is gewoon om aan te geven waar de parsing start en stopt, dit staat er niet echt):

  1. [quote]
  2. [OPMAAKDINGEN]Iets[/OPMAAKDINGEN]
  3. Iets
  4. [/quote]


Ik zou echter graag hebben dat hij 1 diep parst, en in plaats van de andere quote een [...] weergeeft. Voorbeeld:

  1. [quote]
  2. [quote]Iets 1[/quote]
  3. Iets 2
  4. [/quote]


==>

  1. [OPMAAKDINGEN]
  2. [...]
  3. Iets 2
  4. [/OPMAAKDINGEN]


Hoe doe ik dat precies?

63 antwoorden

Gesponsorde links
Offline Dolfje - 17/07/2006 19:41 (laatste wijziging 17/07/2006 19:41)
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
een functie in de class bijmaken:
  1. <?
  2. function parse_quotedubbel( $tekst )
  3. {
  4. $tekst = preg_replace("#\[quote=(.*?)\](.*?)[quote=(.*?)\](.*?)\[/quote\](.*?)\[/quote\]#i","<table class='quote'><tr><td width='20'>&nbsp;<td class='quotetitel'>Quote from \\1<tr><td>&nbsp;<td class='quotetekst'>\\2<div>...</div>\\5</table>", $tekst);
  5. $tekst = preg_replace("#\[quote\](.*?)[quote\](.*?)\[/quote\](.*?)\[/quote\]#i","<table class='quote'><tr><td width='20'>&nbsp;<td class='quotetitel'>Quote<tr><td>&nbsp;<td class='quotetekst'>\\1<div>...</div>\\3</table>", $tekst);
  6. return $tekst;
  7. }
  8. ?>


En in de variabel predefined, voor de quote, quotedubbel zetten.
Offline Ibrahim - 17/07/2006 21:08
Avatar van Ibrahim PHP expert je hoeft de sluitende ] niet te escapen aangezien de regex geen opende tag heeft (die word ge-escaped)
Offline Voldemort - 18/07/2006 14:46 (laatste wijziging 18/07/2006 14:48)
Avatar van Voldemort PHP ver gevorderde Kan dit met een lus, want als je dan ook een [quote en erin een [quote= hebt, dan zal het niet werken denk ik. En het is ook handig als ik het ooit wil uitbreiden. En dat van die 1 diep, als ik dat ooit verander (in 2 diep), hoe zet ik dat dan ik die functie?

Nieuwe vraag: Hoe kan ik een image resizen die op een andere server staat (imagecopyresize (ofzoiets) kan niet, want het moet niet kopieren op mijn hostingaccount, maar gewoon verkleinen (en dan wel met goede maten dat het geen verwrongen kreng wordt)).
Offline Ibrahim - 18/07/2006 15:48 (laatste wijziging 18/07/2006 15:50)
Avatar van Ibrahim PHP expert jij wilt dit hebben:
[quote
'dasa' schreef:
eas
fafdadf[/quote] ??
waar dient dit nou weer voor 

in de <img> tag een width/height aangeven (met CSS is beter volgens BigBug)
Offline Voldemort - 18/07/2006 15:54
Avatar van Voldemort PHP ver gevorderde @silicom14: Als men een quote quote en de binnenste is van een lid zal dat niet werken omdat het script van dolfje enkel een quote zonder lid erin of een quote met een lid erin kan, geen mengeling.

  1. [quote][quote='dasa']eas[/quote] fafdadf[/quote]


==>

  1. [OPMAAKDINGEN][...]fafdadf[/OPMAAKDINGEN]
Offline Richard - 18/07/2006 18:43
Avatar van Richard Crew algemeen http://www.webs...php?id=159

dit bedoel je denk ik;-)
Offline Voldemort - 19/07/2006 11:37
Avatar van Voldemort PHP ver gevorderde Vraag 1: Ik ga de [quote=] weglaten zodat het enkel [quote] is. Ik ga het op dolfje zijn manier doen, alleen werkt m'n basiscode niet:

  1. <?php
  2. function parse_quote($tekst)
  3. {
  4. $html_1 = '<table cellspacing="0" cellpadding="0" align="center" width="96%" border="0" class="stijl_tblr"><tr><td valign="top" width="100%" class="stijl_b"><div align="center"><b>Quote</b></div></td></tr><tr><td valign="top" width="100%">';
  5. $html_2 = '</td></tr></table>';
  6.  
  7. $tekst = preg_replace('#\[quote\](.*?)\[/quote\]#i',$html_1.'\\1'.$html_2,$tekst);
  8.  
  9. return $tekst;
  10. }
  11. ?>


Deze parst dus niks, er wordt niks vervangen, wat is er nu fout?

Vraag 2: Als ik een width en height geef kan ik toch nooit weten met hoeveel ik het moet verminderen zodat het toch nog een mooi plaatje blijft. Hoe los ik dat op?
Offline Ibrahim - 19/07/2006 16:44 (laatste wijziging 19/07/2006 19:38)
Avatar van Ibrahim PHP expert maak je de plaatjes zelf ?

zo ja, maak ze dan gewoon zoals je ze wilt in de juiste height/width

anders ga je gewoon (bij upload) checken op de standaard height/width die jij opgeeft

EDIT:
Quote functie van je werkt gewoon hoor ...
Offline Voldemort - 19/07/2006 18:20 (laatste wijziging 20/07/2006 11:15)
Avatar van Voldemort PHP ver gevorderde Ik upload niks. Als ik dit doe:

[img]http://www.andereserver.com/plaatje.gif[/img]

En dat plaatje is 1024x786, dan zou mijn hele site vervormen. Daarom wil ik dat dat plaatje een maximale breedte krijgt (bv. 500pixels), maar dan moet de hoogte ook mee resizen en dan wel op een manier dat de boel niet verwrongen is. Hoe gaat dat dan?

EDIT: Het werkt enkel als er geen spatie of newline staat, er moet dus meteen tekst staat, anders doet ie het niet. Hoe valt dit op te lossen?
Offline Ibrahim - 20/07/2006 11:49
Avatar van Ibrahim PHP expert verander de i op het einde door si
Offline Voldemort - 20/07/2006 12:07
Avatar van Voldemort PHP ver gevorderde Vraag 1: Dat werkt, kan je even uitleg geven wat die i en s enzo doen?

Vraag 2: Nu heb ik een nieuw probleem, nu wil hij de gewone quotes wel parsen, maar meerdere in elkaar niet. Code:

  1. <?php
  2. function parse_2_quote($tekst)
  3. {
  4. $html_1 = '<table cellspacing="0" cellpadding="0" align="center" width="96%" border="0" class="stijl_tblr"><tr><td valign="top" width="100%" class="stijl_b"><div align="center"><b>Quote</b></div></td></tr><tr><td valign="top" width="100%">';
  5. $html_2 = '</td></tr></table>';
  6.  
  7. $tekst = preg_replace('#\[quote\](.*?)\[quote\](.*?)\[/quote\](.*?)\[/quote\]#si',$html_1.'\\1[...]\\3'.$html_2,$tekst);
  8.  
  9. return $tekst;
  10. }
  11.  
  12. function parse_quote($tekst)
  13. {
  14. $html_1 = '<table cellspacing="0" cellpadding="0" align="center" width="96%" border="0" class="stijl_tblr"><tr><td valign="top" width="100%" class="stijl_b"><div align="center"><b>Quote</b></div></td></tr><tr><td valign="top" width="100%">';
  15. $html_2 = '</td></tr></table>';
  16.  
  17. $tekst = preg_replace('#\[quote\](.*?)\[/quote\]#si',$html_1.'\\1'.$html_2,$tekst);
  18.  
  19. return $tekst;
  20. }
  21. ?>


De dubbele quotes doet hij nog steeds niet, de parse_quotes en de dan parse_2_quotes uitvoeren werkt ook niet. Wat is er nu mis?

Vraag 3: Ik upload zelf geen plaatjes. Als ik dit doe:

[img]http://www.andereserver.com/plaatje.gif[/img]

En dat plaatje is 1024x786, dan zou mijn hele site vervormen. Daarom wil ik dat dat plaatje een maximale breedte krijgt (bv. 500pixels), maar dan moet de hoogte ook mee resizen en dan wel op een manier dat de boel niet verwrongen is. Hoe gaat dat dan?
Offline Ibrahim - 20/07/2006 16:05 (laatste wijziging 21/07/2006 11:49)
Avatar van Ibrahim PHP expert vraag 1:

PHP.NET

Citaat:
i (PCRE_CASELESS)
If this modifier is set, letters in the pattern match both upper and lower case letters.


Citaat:
s (PCRE_DOTALL)
If this modifier is set, a dot metacharacter in the pattern matches all characters, including newlines. Without it, newlines are excluded. This modifier is equivalent to Perl's /s modifier. A negative class such as [^a] always matches a newline character, independent of the setting of this modifier.



Vraag 3:

plaatje met standaard hoogte/breedte: geen link maar gewoon zo houden
plaatje groter dan standaard hoogte/breedte: wel link, naar andere pagina die op ware grootte laat zien 
Offline Voldemort - 21/07/2006 16:43
Avatar van Voldemort PHP ver gevorderde Vraag 1: Ok.

Vraag 2: Ik ben erachter gekomen wat het probleem is: PHP rekent [quote ] en [ /quote] soms tot (.*?) of hij zal de eerst [quote ] en laatste [ /quote] opzoeken, daardoor zal het nooit goed zijn. Enig idee hoe dit op te lossen?

Vraag 3: Maar als ik nu toch gewoon wil resizen, hoe doe ik dat dan best?
Offline Ibrahim - 21/07/2006 17:05
Avatar van Ibrahim PHP expert over vraag 3:

dat moet ik nog even naar kijken, maar eerst je topic beantwoorden lijkt me slim ? in plaats van 3 vragen te stellen (tegelijk), kun je ze ook een voor een stellen.

over vraag 2:

ik heb het nu zover dat hij nested quotes [..QUOTE..] weergeeft.
Dat is natuurlijk niet de bedoeling 
als ik het heb, ga ik het niet geven maar je stap voor stap uitleggen hoe jij het zelf kunt (als ik het afkrijg, nieuw gebied regex )
Offline Voldemort - 21/07/2006 18:30
Avatar van Voldemort PHP ver gevorderde @siliecom14: 3 vragen tegelijk stellen is handig omdat lid A misschien het antwoord op vraag 2 weet en lid B op vraag 1, etc. Zo gaat alles sneller .

Dat je alles uitlegt vind ik heel goed, dan leer ik zelf ook goed bij.
Offline Ibrahim - 21/07/2006 18:46 (laatste wijziging 21/07/2006 19:10)
Avatar van Ibrahim PHP expert nou, dan vind je me nu slecht, want ik kan echt niet helpen, want de regex kan ik niet goed krijgen . Ik hoop dat jexus je kan helpen (regex master vind ik^^)

@hieronder:

ja, ben pas eergister begonnen met regexes. Dus dit is iets boven me niveau 
Offline Voldemort - 21/07/2006 18:55
Avatar van Voldemort PHP ver gevorderde Ik dacht dat je het wel kon (dat het aan het lukken was) omdat je zei:

Citaat:
als ik het afkrijg


:P
Offline Nation - 21/07/2006 22:45
Avatar van Nation PHP interesse een vraagje: nu het hier toch staat:p
ik heb wel ooit gehoord van quote,
mar nooit gebruikt,
en ik wil achtereen ook ubb script maken,
maar wat is nu precies de bedoeling van QUOTE?
wat doet het precies?
Offline Rens - 21/07/2006 22:52 (laatste wijziging 21/07/2006 22:53)
Avatar van Rens Gouden medaille

Crew algemeen
Een quote is een citaat.
Je verwijst dus naar een stuk tekst dat iemand anders gezegd heeft.
Jij zegt bijvoorbeeld "ik heb wel ooit gehoord van quote,".
Nu heb ik jou 'gequote'/geciteerd.
Met de quote functie kun je zorgen dat het er zo bijvoorbeeld uit komt te zien:
Citaat:
Nation schreef op 21/07/2006 22:45:

ik heb wel ooit gehoord van quote,
Offline Nation - 21/07/2006 22:59
Avatar van Nation PHP interesse aah, dus het gaat over een stukje,
en niet het hele bericht,
dus als iemand op de quote knop drukt,
is het de bedoeling
dat het ganse bericht er komt te staan en dat zij de stukken die ze niet nodig hebben er uithalen,
of hoe?
Offline Rens - 21/07/2006 23:03
Avatar van Rens Gouden medaille

Crew algemeen
Bijvoorbeeld.
Je kunt ook het hele bericht, maar je kunt ook stukjes van het bericht.
Ligt er maar net aan wat belangrijk is...
Offline Nation - 21/07/2006 23:09
Avatar van Nation PHP interesse ja,
maar als ik een site bouw,
kan ik niet bepalen wat er belangrijk is hee?
dat bepaalt toch degene die de quote doet of niet
Offline Rens - 21/07/2006 23:17
Avatar van Rens Gouden medaille

Crew algemeen
Goh... 
Offline Richard - 22/07/2006 09:08 (laatste wijziging 22/07/2006 09:08)
Avatar van Richard Crew algemeen Eerst Voldemort, zou ik wel willen weten waarom je het toch zo nodig vindt om [...] erin te zetten... Het staat veel netter als je de rest van de tekst er gewoon bij hebt staan (daarnaast is dit veel makkelijker):

(ffkes mooie regex bedenken)
  1. <?php
  2. $text = '[quote]
  3. [quote]Iets[/quote]
  4. Iets
  5. [/quote]';
  6.  
  7. while (preg_match ('~\[quote]((?:(?!\[quote]).)*?)\[/quote]~si', $text))
  8. {
  9. $text = preg_replace ('~\[quote]((?:(?!\[quote]).)*?)\[/quote]~si', '[OPMAAKDINGEN]\1[/OPMAAKDINGEN]', $text);
  10. }
  11. ?>


hoppa, je hebt geneste quotes... (het kan natuurlijk ook met de conventionele regex \[quote\](.*?)\[/quote\], maar dit is efficienter...

De manier waarop het overigens wel kan, heb ik eerder al genoemd.
Offline Voldemort - 22/07/2006 11:08
Avatar van Voldemort PHP ver gevorderde @JeXuS: Dan hou ik het maar op jouw script en dat werkt heel goed. Iedereen bedankt voor de hulp met m'n quotes.

Maar m'n 3e vraag: Dat van die images:

Image resize bij de [img]-tag als de breedte groter is dan x pixels. Ik heb het zelf niet geupload. Hoe kan dit zodat de image niet verwrongen wordt?
Offline Richard - 22/07/2006 12:53
Avatar van Richard Crew algemeen Je kunt het met PHP.net: getimagesize proberen (hoewel dit natuurlijk behoorlijk traag kan zijn), of je kunt met javascript de hoogte en breedte opvragen en aanpassen naderhand.
Offline Voldemort - 22/07/2006 13:53
Avatar van Voldemort PHP ver gevorderde Met getimagesize heb ik enkel de afmetingen en nog wat dingen, maar als ik ze ook wil aanpassen (met PHP), hoe gaat dat dan (zonder dat ik zelf wat upload)?
Offline Richard - 22/07/2006 14:26
Avatar van Richard Crew algemeen height en width in de img tag meegeven?:cool:
Offline Voldemort - 22/07/2006 14:44
Avatar van Voldemort PHP ver gevorderde Dat weet ik wel, maar ik wil niet de image verwrongen is of dergelijke.
Offline Richard - 22/07/2006 15:07
Avatar van Richard Crew algemeen tja, dan kun je het niet verkleinen he;)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.305s