Toon posts:

PHP Ubb codes.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb dit stukje gevonden en gebruikt in een script
PHP:
1
<?return ereg_replace("((http://)(([[:alnum:]]|[[:punct:]])*)", "<a href=\"\\0\">\\0</a>",$a);?>

Hiermee lukt het me om url's om te zetten naar echte linkt, maar nu het volgende, ook links die in een url, whatver tag zitten worden ook mee genomen :{ ik heb de hele nacht (terwijl ik :Z) zitten dromen :P over dit probleem maar kom er niet uit :?

Iemand een idee hoe ik dit kan oplossen? ;)

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

(a) download phpBB, vaak nuttig om dit soort snippets uit te halen (anders Invision Board)
(b) gebruik preg_replace() in plaats ereg_replace()

Rustacean


  • PowerSp00n
  • Registratie: Februari 2002
  • Laatst online: 30-08 08:07

PowerSp00n

There is no spoon

Misschien een idee om te verplichten dat er een spatie voor de http:// staat? En achter het adres. Als mensen de tags gebruiken zullen deze er niet staan. Het is misschien netter om te controleren of er helemaal geen tags om staan maar zo moet het ook wel lukken denk ik.

Verwijderd

[topic=536978/1/50] :z

Verwijderd

Topicstarter
Op zaterdag 29 juni 2002 09:20 schreef PowerSp00n het volgende:
Misschien een idee om te verplichten dat er een spatie voor de http:// staat? En achter het adres. Als mensen de tags gebruiken zullen deze er niet staan. Het is misschien netter om te controleren of er helemaal geen tags om staan maar zo moet het ook wel lukken denk ik.
Ik denk dat dit dan wel moet werken
PHP:
1
<?return ereg_replace("([[:alnum:]]|[[:punct:]])((http://)(([[:alnum:]]|[[:punct:]])*)", "<a href=\"\\0\">\\0</a>",$a);?>

-edit werkt dus niet ;(

  • Vigory
  • Registratie: November 2000
  • Laatst online: 15-04 10:26
De PHP versie van UBB gebruikt dit:
PHP:
1
<?// Convert url markup -> html$Body = preg_replace("/\\[url\]http:\/\/([^\\[]*?)\\[\/url\]/","<a target=\"_blank\" href=http://\\1>http://\\1</a>",$Body);$Body = preg_replace("/\\[url\]([^\\[]*?)\\[\/url\]/","<a target=\"_blank\" href=http://\\1>\\1</a>",$Body);$Body = preg_replace("/\[url=http:\/\/(.*?)\]([^\\[]*?)\\[\/url\]/","<a target=\"_blank\" href=http://\\1>\\2</a>",$Body);$Body = preg_replace("/\[url=(.*?)\]([^\\[]*?)\\[\/url\]/","<a target=\"_blank\" href=http://\\1>\\2</a>",$Body);$Body = preg_replace("/\[URL=http:\/\/(.*?)\]([^\\[]*?)\\[\/URL\]/","<a target=\"_blank\" href=http://\\1>\\2</a>",$Body);$Body = preg_replace("/\[URL=(.*?)\]([^\\[]*?)\\[\/URL\]/","<a target=\"_blank\" href=http://\\1>\\2</a>",$Body);?>

Verwijderd

Topicstarter
ja maar ik wil het dus zonder url ed..

http://bladediebla.com

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
hehe wat ik heb gedaan is heel dirty.
PHP:
1
<?// Even een dirty replace doen die er voor zorgt dat http:// binnen een ubb tag niet omgezet worden naar hyperlinks$message = eregi_replace("]http://", "]url://", $message);$message = eregi_replace("=http://", "=url://", $message);// Links beginnend met http:// omzetten naar hyperlink$message = eregi_replace("http://([^[:space:]]*)", "<a href=\"http://\\1\" target=_blank>\\1</a>", $message);    // url:// terugzetten naar http://$message = str_replace('url://', 'http://', $message);?>

:P

It’s nice to be important but it’s more important to be nice


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Dit zou je op moeten lossen met de kennis die je op hebt gedaan als je serieus in parsers hebt verdiept. Je kunt urls dan gewoon netjes in de taal opnemen, waardoor er dus helemaal niets lastigs mee is...

Zie dus:
[topic=536915/1/400]

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 09:56

mOrPhie

❤️❤️❤️❤️🤍

Het antwoord is natuurlijk al gegeven, maar toch nog even een tip. Iedereen doet voor elke parse een eigen preg_replace, wat het op grote schaal niet sneller maakt. Om de snelheid erin te houden kun je beter zoiets als dit doen:
PHP:
1
<?    function UbbParse($bericht) {        $UBB_pattern = array (                         "/\\[quote\]((.|\n)*?)\\[\/quote\]/si",                        "/\\[list\]((.|\n)*?)\\[\/list\]/si",                        "/\[list=1\]((.|\n)*?)\\[\/list\]/si",                        "/\\[\*\]/",                        "/\\[b\]((.|\n)*?)\\[\/b\]/si",                        "/\\[u\]((.|\n)*?)\\[\/u\]/si",                        "/\\[i\]((.|\n)*?)\\[\/i\]/si",                        "/\\[kop\]((.|\n)*?)\\[\/kop\]/si",                        "/\\[url\]((.|\n)*?)\\[\/url\]/si",                        "/\[url=http:\/\/((.|\n)*?)\]((.|\n)*?)\\[\/url\]/si",                        "/\\[email\]((.|\n)*?)@((.|\n)*?)\\[\/email\]/",                        "/\[email=((.|\n)*?)@((.|\n)*?)\]((.|\n)*?)\\[\/email\]/si",                        "/\\[img\]http:\/\/(.*?)\\[\/img\]/",                        "/\r\n/"                        );         $HTML_pattern = array (                         "<blockquote>Quote:<hr>\\1[/quote]",                         "<ul>\\1</ul>",                         "<ol>\\1</ol>",                         "<li>",                        "<b>\\1</b>",                         "<u>\\1</u>",                         "<i>\\1</i>",                        "<font color=\"#FF9000\" color=\"3\"><strong>\\1</strong></font>",                        "<a href=\"\\1\" target=\"_blank\">\\1</a>",                         "<a href=http://\\1 target=\"_blank\">\\2</a>",                         "<a href=\"mailto:\\1@\\2\">\\1@\\2</a>",                         "<a href=\"mailto:\\1@\\2\">\\3</a>",                        "[img]\"http://\\1\">",[/img]\r\n"                 );         $bericht = preg_replace($UBB_pattern,$HTML_pattern,$bericht);        return $bericht;    }?>

Dus met 2 arrays en dan 1 keer preg_replace, werkt perfect.

Echter hecht niet te veel waarde aan deze UBB parser, want hij is niet helemaal completely waterdicht (combinatie van [b] en [url] kan nog wel 'ns problemen geven bijvoorbeeld.) Het was voor mij ook maar een probeerseeltje ;)

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


Verwijderd

Topicstarter
vraagje :)

$text = preg_replace("\\[*\].*?\\r\\n/is", "<li>\\1<br><\/li>", $text);

ik krijg een error Warning: Delimiter must not be alphanumeric or backslash in e:\x.php on line 1

:? waar zit um dat in?

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
mOrPhie schreef op 29 juni 2002 @ 16:06:
Het antwoord is natuurlijk al gegeven, maar toch nog even een tip. Iedereen doet voor elke parse een eigen preg_replace, wat het op grote schaal niet sneller maakt. Om de snelheid erin te houden kun je beter zoiets als dit doen:

[...]

Dus met 2 arrays en dan 1 keer preg_replace, werkt perfect.

Echter hecht niet te veel waarde aan deze UBB parser, want hij is niet helemaal completely waterdicht (combinatie van [b] en [url] kan nog wel 'ns problemen geven bijvoorbeeld.) Het was voor mij ook maar een probeerseeltje ;)
Waar slaat precies dat si op? Ik heb het meerdere keren gezien bij dit soort dingen, alleen kan nergens vinden waar het voor is. Ik heb zelf een probeersel UBB parser, maar dus zonder dat si, heb het ook met geprobeerd, alleen geen verschil kunnen ontdekken :? is het voor alleen als je het pattern in een array stopt?

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 14 augustus 2002 @ 21:00:
vraagje :)

$text = preg_replace("\\[*\].*?\\r\\n/is", "<li>\\1<br><\/li>", $text);

ik krijg een error Warning: Delimiter must not be alphanumeric or backslash in e:\x.php on line 1

:? waar zit um dat in?

Je zoekstring begint met een backslash...

Waar zal die error toch zitten dan... Bekijk de voorbeelden bij www.php.net/preg_replace es.

Verwijderd

Topicstarter
ACM schreef op 14 augustus 2002 @ 21:42:

[...]

Je zoekstring begint met een backslash...

Waar zal die error toch zitten dan... Bekijk de voorbeelden bij www.php.net/preg_replace es.
:* dat klopt idd er moest nog een / voor :)

[ Voor 0% gewijzigd door Verwijderd op 14-08-2002 22:09 . Reden: omdat ik gek ben :D ]


  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 09:56

mOrPhie

❤️❤️❤️❤️🤍

_Mo_ schreef op 14 augustus 2002 @ 21:26:
[...]


Waar slaat precies dat si op? Ik heb het meerdere keren gezien bij dit soort dingen, alleen kan nergens vinden waar het voor is. Ik heb zelf een probeersel UBB parser, maar dus zonder dat si, heb het ook met geprobeerd, alleen geen verschil kunnen ontdekken :? is het voor alleen als je het pattern in een array stopt?
Lees dit even:
http://www.php.net/manual/en/pcre.pattern.modifiers.php

de /si geeft 2 dingen aan. Het zijn beide pattern modifiers. Een optie dus. De s geeft aan, dat de patternmix niet op 1 regel hoef voor te komen, en de i geeft aan dat ie hoofdletterongevoelig is. ;)

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.

Pagina: 1