Toon posts:

[PHP] fuction & preg_replace

Pagina: 1
Acties:
  • 135 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Nou na de thread over die UBB enzo, d8 ik laat ik eens kijken hoe het werkt

Ik heb sommige dingen gecopieerd, en sommige zelf gemaakt (bij quote, quote=, code en code=)

Maar hij deed het eerst maar nu niet meer omdat ik er een function van gemaakt hebt.
Maar het zijn zoveel preg_replace dat het mij wel slim leek...<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR><html>
<link rel="stylesheet" href="style.css">
<body>
<?php
if(isset($post))
{
function UBB($string){
//HTML escapen
$string = ereg_replace ("<","<",$string);
$string = ereg_replace (">",">",$string);


//UBB code
$tags = array("b","u","i","B","U","I");
for ($i = 0; $i < sizeof($tags); $i++)
{
$t = $tags[$i];
$open1 = quotemeta("[$t]"); $close1 = quotemeta("[/$t]");
$open2 = "<$t>"; $close2 = "</$t>";
$expression = "!$open1(.*)$close1!Ui";
$replacement = "$open2\\1$close2";
$string = preg_replace($expression, $replacement, $string);
}

//ubb img
$string = preg_replace("/(\\[img\])(.*)(\\[\/img\])/U","[img]\"\\2\"[/img]", $string);


//ubb link
$string = eregi_replace("(^|[ \n\r\t])((http(s?)://)(www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","\\1<a href=\"\\2\" target=\"_blank\">\\2</a>",$string);
$string = eregi_replace("(^|[ \n\r\t])(www\.([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>",$string);
$string = eregi_replace("(^|[ \n\r\t])((ftp://)(www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","\\1<a href=\"\\2\" target=\"_blank\">\\2</a>",$string);
$string = eregi_replace("(^|[ \n\r\t])(ftp\.([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","\\1<a href=\"ftp://\\2\" target=\"_blank\">\\2</a>",$string);

//ubb email
$string = preg_replace ("/(([a-z]|[A-Z]|[0-9]|[_\-.])*@([a-z]|[A-Z]|[0-9]|[_\-.])*\.\w{2,3})(\W|$|\ )/", "<a href=\"mailto:\\1\">\\1</a>\\4", $string);

//ubb [url] en [url=]
$string = preg_replace ("/\[url=(.*?)\](.*?)\\[\/url\]/i", "<a href=\"\\1\">\\2</a>",$string);
$string = preg_replace ("/\\[url\](.*?)\\[\/url\]/i", "<a href=\"\\1\">\\1</a>",$string);


//ubb quoten & code
$string = preg_replace ("/\\[quote\](.*?)\\[\/quote\]/i", "<br><div class=\"quote\"><small>quote:</small><hr>\\1<hr></div>",$string);
$string = preg_replace ("/\
quote: (.*?)\
(.*?)\\[\/quote\]/i", "<br><div class=\"quote\"><small>quote by \\1:</small><hr>\\2<hr></div>",$string);
$string = preg_replace ("/\\[code\](.*?)\\[\/code\]/i", "<br><div class=\"code\"><small>code:</small><hr>\\1<hr></div>",$string);
$string = preg_replace ("/\[code=(.*?)\](.*?)\\[\/code\]/i", "<br><div class=\"code\"><small>code of \\1:</small><hr>\\2<hr></div>",$string);

//Enters toe voegen
$string = nl2br($string);
}

$text=UBB($text);

Print("<hr>$text<hr>");
}
else
{
Print("
<form action=$PHP_SELF method=post>
<textarea name=text rows=20 cols=50>HTML code laten zien ;)</textarea>
<input type=submit name=post value=test>
");
}
?>
</body>
</html>
/me DrPain[]snapt er nix van d=]

/me DrPain[]vraag zich nu af, voor function moet je dan een lib geinstalled hebben???
www.phpbuilder.com/manual/functions.arguments.php hier staat nix

Verwijderd

Topicstarter
html escapen is btw dit:
$string = ereg_replace ("<","&_lt_;",$string);
$string = ereg_replace (">","&_gt_;",$string);

dus &_gt_; (zonder _'s)

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Hier stond een bericht die nergens op sloeg... :(

Programmer - an organism that turns coffee into software.


Verwijderd

Topicstarter
<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>$text=UBB($text);[/quote]ik roep hem toch aan???

/me DrPain[]weet wel wat functies zijn ;)

  • Hans
  • Registratie: Juni 1999
  • Niet online
Sodeju, het wordt toch eens tijd dat ik wat meer met regexps ga doen. Als ik dit zo zie val ik behoorlijk van m'n stoel. Wat dat betreft loopt mijn kennis een beetje achter.

Heeft er iemand misschien een URL naar 'The ultimate regexp bible' ;)

En wat is nou eigenlijk het concrete verschil tussen PCRE en normale regexps?

Verwijderd

Als ik dit zo zie val ik behoorlijk van m'n stoel.

Er kan ook pertinente onzin staan, maar het ziet er imposant uit... ;)

Wat is nou eigenlijk het concrete verschil tussen PCRE en normale regexps?

Je hebt het dus over PHP....
Die PCRE zijn volgens de Perl notatie (Perl is het lekkerste wat een regexer kan overkomen zo ongeveer), maar dan in wat beperktere mogelijkheden met hier en daar weer een notatie uitbreiding.

Nadeel met PHP is dat regexen in een string moeten enzo... :( om een gebackslashd teken in een regex in een string te zetten moet er nog een voor... het is al zo lekker lezen...

  • tomato
  • Registratie: November 1999
  • Niet online
Grootste voordeel van de PCRE's vind ik dat je ze lazy (niet-greedy) kunt maken (ik denk dat je weet wat dat betekent?) en met een 'gewone' regex in PHP gaat dat niet.

  • TheDuke
  • Registratie: Juni 1999
  • Niet online
is iemand in een jolige bui die zo uit z'n hoofd ook ff de regex voor 'slash me-en' weet :) ?

of dat we die hier ff kunnen afleiden met z'n allen :) ?

Verwijderd

Topicstarter
/me DrPain[]ziet al wattie fout doet sorry

*D

Verwijderd

/ me

Zoek d'r effe op, hebben we een tijdje geleden gedaan op verzoek van Tuinhark.

Verwijderd

Topicstarter
idd / me dat wil ik er ook tussen ik heb alleen nog geen forum, dus ook nog geen $user ;)

Verwijderd

is iemand in een jolige bui die zo uit z'n hoofd ook ff de regex voor 'slash me-en' weet :) ?

http://gathering.tweakers.net/forum/list_messages/48394

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 14-09 12:05

Tuinhark

Retro

De fout zittem in het feit dat de functie binnen een if-blok staat en volgens mij klopt het ook niet helemaal met de accolades... Kijk daar maar even naar.

En ja, nogmaals dank aan allen die zich hebben ingespand om samen met mij de / me regexp samen te stellen. *D

:Y)

Verwijderd

Nogmaals dank aan allen die zich hebben ingespand om samen met mij de / me regexp samen te stellen. *D

Our pleasure... :)

Verwijderd

Topicstarter
IDD hartstikke bedankt

(btw vind je quote={poster} en code={bestandsnaam} geen goed ID? heel simpel toch leuk!!!!!)

Verwijderd

Topicstarter
voor quote gebruik ik dit:
$string = preg_replace ("/\\[quote\](.*?)\\[\/quote\]/i", "<br><div class=\"quote\"><small>quote:</small><hr>\\1<hr></div>",$string);

alleen als tussen [ quote ] en [ /quote ] enters staan, dan werkt de code niet meer, wrom? En hoe kan ik dat oplossen?

Thanx ppl.

  • tomato
  • Registratie: November 1999
  • Niet online
Als je in de docs kijkt zul je zien dat . (punt) alles is behalve newline. Als je . dus vervangt door (.|\n) zal het waarschijnlijk wel werken. Kan denk ik ook wel anders, bijv [.\n] ofzo...?

Verwijderd

Topicstarter
Thanx

dan zal ik alles daar door vervangen, want bij [ b ] [ /b ] doen mensen het ook wellus

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 14-09 12:05

Tuinhark

Retro

tomato! Held! *D

:Y)

  • tomato
  • Registratie: November 1999
  • Niet online
<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 05 oktober 2000 22:06 schreef Tuinhark het volgende:
tomato! Held! *D[/quote]Hehe, in tegenstelling tot je Yapbb zijn mijn codes NIET freeware *D

Verwijderd

Topicstarter
wat is je rekening nummer m8 ;)

j/k

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 14-09 12:05

Tuinhark

Retro

LOL @ tomato && DrPain :+

:Y)
Pagina: 1