[PHP] Probleem met UBB opmaak codes + auto url

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

  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
Zo, ben ik weer met een vraagje over gebarentaal ;)

Owkee, ik heb nu dankzij Tomato volgens mij de juiste (lees: goed werkende) UBB opmaak codes als:

[_b][/b_]
[_i][/i_]
[_u][/u_]
[_url][/url_]
[_url=][/url_]

zonder _`s
Die werken perfect :) :)

Nu heb ik der ook nog zo`n regex bij (weer van Tomato, voor mij is en blijft het gebarentaal, maar met de tutorials die ik nu heb gelezen zal de basis er wel snel inzitten) die als iemand bv: www.ikke.com typt dus zonder [_url][/url_] automatisch wordt omgezet naar een url.

Ook die werkt "los" perfect :) :)

Het probleem:

Stel iemand typt [_url]www.ikke.com[/url_] dan wordt deze dus 2 x geparst. 1x door de [url_] regex en 1x door de auto url regex. Gevolg: een ****zooi aan html :(

Dit geld overigens voor alle overige UBB opmaak codes in combinatie met de auto url regex, deze dus:

[_url=][/url_]
[img_][/img_]

Alvast hartelijk bedankt voor diegene die me uit deze regex troep helpt!

Counter-Strike

PS. mocht het nodig zijn om de regex-en te posten dan wil ik dat best doen in overleg met Tomato natuurlijk :)

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Bij die 2e set (voor auto-convert), moet je zorgen dattie alleen parst als er [:space:] voor/na de URL staat.

Let wel:
* Tuinhark is ook een Regular Expressions wannabe... :)

:Y)

  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
Tuinhark, je bent geweldig :) :) :) :)

Waarom ik hier nou niet eerder aan denk is mij een raadsel maargoed :).

Mocht dit niet de idiale oplossing zijn dan hoor ik het wel :)

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
Hmmz, heb het ff toegepast maar het is niet _de_ oplossing, stel dat iemand allen maar een url post, of gewoon na een nieuwe regel te hebben gegeven begint met een url dan werkt het niet :(

Toch bedankt Tuinhark

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Er schiet me iets te binnen:

zet er niet<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>[:space:][/quote]voor, maar<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>^|[:space:][/quote]:Y)

  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
owkee, ga ik ff proberen

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
Hier even de regex om auto url regex van Tomato:

zie paar post beneden, editen wil niet omdat dit forum alle \`s opeet :)

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • tomato
  • Registratie: November 1999
  • Niet online
Je kunt natuurlijk kijken of er 'iets anders dan een spatie/newline' achter komt (dat mag dus niet). Maar het blijft tricky, want dit doet het dan dus niet (www.mijnlink.nl), tussen haakjes bijvoorbeeld.

  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
Dat kan ook :)

Denk dat arjen dat ook doet want hier werkt het ook niet tussen ()...

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
damn, wilde editen maar drukte op quote :(

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Counter-Strike, je (tomato's) code is vernaggeld. Hij heeft alle \ er uit gevist. FF correcten of reposten. :'(

:Y)

  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
reposten want van editen wordt ie niet veel beter, hier is ie:

$tekst = preg_replace("_(((http://|ftp://)(www\\.)?)|(www\\.))(.*)_i", "<A HREF=\"http://\\4\\5\\6\">\\4\\5\\6</A>", $tekst);

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Jammer.. bij mijn [_url=] tags gaattie hier mis..

:Y)

  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
Jah, dat is nu net de fout :(

er moet dus dat van jouw tussen: ^|[:space:]

of hij moet kijken of dat er 'iets anders dan een spatie/newline' achter komt

Nu kan ik wel een beetje regex-en maar dit gaat me te ver :(

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


Verwijderd

Jep, als ik 'm gebruik maakt hij ook wel 's van alle tekst die na de link komt een link.........

vaag :(

Verwijderd

Misschien heb je hier wat aan?

$TEXT = eregi_replace("(([hH][tT][tT][pP]://)(www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","<a href=\\1 target=\"_blank\">\\1</a>",$TEXT );
$TEXT = eregi_replace("(([fF][tT][pP]://)(www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","<a href=\\1 target=\"_blank\">\\1</a>",$TEXT );
$TEXT = eregi_replace("([a-z_-][a-z0-9\._-]*@[a-z0-9_-]+(\.[a-z0-9_-]+)+)","<a href=mailto:\\1>\\1</a>",$TEXT );
$TEXT = eregi_replace("(^|[ \n\r])(www\.([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","\\1<a href=http://\\2 target=\"_blank\">\\2</a>",$TEXT );

  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
owkee, Tuinhark en ik hebben ff een hefig (>:)) gesprek gehad over ICQ en hebben devolgende functie gemaakt:

// Functie voor het omzetten van Auto Links (bv http://www.ikke.com) in een reactie
function TextToLinks($tekst)
{
$lines = split("\n",$tekst);

while (list($key,$line) = each($lines))
{
$line = eregi_replace("(^|[:space:])www\.","\\1http://www.",$line);
$line = eregi_replace("(^|[:space:])ftp\.","\\1ftp://ftp.",$line);
$line = eregi_replace("(^|[:space:])((http|https|ftp)://[^ )\r\n]+)","<a class=url href=\"\\2\" target=_blank>\\2</a>",$line);
$newText .= $line . "\n";
}
return $newText;
}

Het enige wat deze nog niet doet is bv:
Ik wil graag naar www.tweakers.net

(hij parst dus nog geen urls na een [spatie] terwijl dat wel hoort door ^|[:space:] )

Wie helpt

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Kom op Arjen. Help ons uit de brand! >:)

  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
Dat zou natuurlijk ook wel handig zijn ja >:)

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • Arjen
  • Registratie: Juni 1999
  • Laatst online: 03-01 08:52
Hmmz :)
gebruik altijd preg_replace(), ereg(i)_replace vinnik zelf nogal brak. Als je de regexp greedy maakt zou ie 't moeten doen lijkt me..

  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
aha, dan moeten we weer terug op die van Tomato, deze dus:

$tekst = preg_replace("_(((http://|ftp://)(www\\.)?)|(www\\.))(.*)_i", "<A HREF=\"http://\\4\\5\\6\">\\4\\5\\6</A>", $tekst);

ff snel op php.net kijk en hoe je zo`n ding greedy krijgt :)

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

blaat... * Tuinhark had het weer eens mis...

:Y)

  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
Tuinhark moet eens wat minder snel editen:
Dit had hij:

$tekst = preg_replace("_(((http://|ftp://)(www\\.)?)|(www\\.))(.*)_iU", "<A HREF=\"http://\\4\\5\\6\">\\4\\5\\6</A>", $tekst);

Hehehe inderdaad, hij is wel greedy zo maar werken??... HO maar :(

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Counter-Strike, ik zei toch dat 'het niet 'm niet meer vandaag zou worden'? Daarom heb ik het nu pas. :P<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>$text = eregi_replace("(^|[ \n\r\t])((http(s?)://)(www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","\\1<a href=\"\\2\" target=\"_blank\">\\2</a>",$text);
//Hier worden alle http:// texten aanklikbare links.
$text = eregi_replace("(^|[ \n\r\t])((ftp://)(www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","\\1<a href=\"\\2\" target=\"_blank\">\\2</a>",$text);
//Hier worden alle ftp:// texten aanklikbare links.
$text = eregi_replace("([a-z_-][a-z0-9\._-]*@[a-z0-9_-]+(\.[a-z0-9_-]+)+)","<a href=mailto:\\1>\\1</a>",$text);
//Hier worden e-mail adressen aanklikbaar
$text = eregi_replace("(^|[ \n\r\t])(www\.([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>",$text);
//Als iemand de http:// vergeet en met www. begint wordt automatisch http:// toegevoegd en aanklikbaar gemaakt.
$text = eregi_replace("(^|[ \n\r\t])(ftp\.([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","\\1<a href=\"ftp://\\2\" target=\"_blank\">\\2</a>",$text);
//Als iemand de ftp:// vergeet en met ftp. begint wordt automatisch ftp:// toegevoegd en aanklikbaar gemaakt.[/quote]Zoals je aan het commentaar kunt zien... ;) is het gejat van phpfreakz en dan een beetje gecustomized. :7

Ik ben er zwaar heavily tevreden mee! 8-)

:Y)

  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
Tuinhark, zoals ik al eens eerder heb gezegt, je bent geweldig :)

Tot nu toe nog geen bugs gevonden!

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • tomato
  • Registratie: November 1999
  • Niet online
Op zich werkt het goed (jullie zeggen het :)), maar ik vind het wel een beetje heavy om 5 regexen (die toch al niet echt snel zijn) los te laten op al je tekst voor één doel. Maarja, eigenlijk moet ik niet zeuren he, hij werkt tenminste :).

  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
Hehehe als jij een betere weet/maakt >:)

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Psies. >:)

En bovendien, dit zijn echt verschillende regexps. Zoals je kunt zien heb ik die ene voor http:// en https:// kunnen combineren (eitje :7), maar om nu bv die voor de email er bij in te ingereren... :+

Maar als je nog sugesties hebt tomato.. :)

:Y)

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Demm I'm on a roll! >:) Ik krijg het nog wel eens door. :)<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>$text = eregi_replace("(^|[ \n\r\t])((http(s?)://)(www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*(\.jpg|\.gif))","\\1[img]\"\\2\"[/img]",$text);[/quote]En hij converteert automatisch URLs van gifjes en jpegjes naar plaatjes. 8-)

:Y)

  • RiCk
  • Registratie: Augustus 2000
  • Laatst online: 20-02 06:50
Kun je hier dus ook ubb codes mee maken voor php?

Dus voor bold enzo?

  • tomato
  • Registratie: November 1999
  • Niet online
;) Die is cool!

Btw, Tuinhark heb je honger ofzo?!?

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 30 september 2000 16:38 schreef RiCk het volgende:
Kun je hier dus ook ubb codes mee maken voor php?

Dus voor bold enzo?[/quote]$tags = array("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";
$text = preg_replace($expression, $replacement, $text);
}
Voor ver, italic en underline. Je kunt nieuwen toevoegen door ze simpelweg in de array te mikken.<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 30 september 2000 16:38 schreef tomato het volgende:
;) Die is cool!

Btw, Tuinhark heb je honger ofzo?!?[/quote]Nah, met een beetje fantasie zie je er een hark in. ;)

:Y)

  • tomato
  • Registratie: November 1999
  • Niet online
Nah, met een beetje fantasie zie je er een hark in.
*LOL* :)

  • RiCk
  • Registratie: Augustus 2000
  • Laatst online: 20-02 06:50
Thnx tuinhark,

maar euh, hoe verander ik text in een plaatje dan?

kan dat ook nog?

als je nog genoeg fantasie over hebt :P

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Je bedoelt dat je een URL geeft en dattie er een plaatje van maakt? Zie mijn post van zaterdag 30 september 2000 16:33 (hierboven). ;)

Als je bedoelt, met de [img] en [/img] tags:<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>$text = preg_replace("/(\\[img\])(.*)(\\[\/img\])/U","[img]\"\\2\"[/img]", $text);[/quote](heb ik van jnijboer)

:Y)

Verwijderd

Hmm deze heb ik ook een keer gemaakt:
http://* omzetten:
$string = preg_replace ("/([^\w\"\=\]])((ftp:\/\/)|(http:\/\/)([a-z]|[A-Z]|[0-9]|[\-.])*\.\w{2,3})/", "\\1<a href=\"\\2\">\\2</a>", $string);
email omzetten:
$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);
url= en url codes:
$string = preg_replace ("/\[url=(.*?)\](.*?)\\[\/url\]/i", "<a href=\"\\1\">\\2</a>",$string);
$string = preg_replace ("/\\[url\](.*?)\\[\/url\]/i", "<a href=\"\\1\">\\1</a>",$string);

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Voor URL en URL= heb ik:<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>$text = preg_replace("/(\[url=)(http|https|ftp)(:\/\/\S+?)(\])(.+?)(\\[\/url\])/U","<a href=\"\\2\\3\" target=\"_new\">\\5</a>",$text);
$text = preg_replace("/(\[url=)(\S+?)(\])(.+?)(\\[\/url\])/U","<a href=\"http://\\2\" target=\"_new\">\\4</a>",$text);[/quote]Ook weer van jnijboer. :)

Email en "http://", "https://", "ftp://", "www.", en "ftp." stonden hierboven ook al. (die 5 regexpen)

Maar, keep 'em coming! :D

:Y)

Verwijderd

<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Email en "http://", "https://", "ftp://", "www.", en "ftp." stonden hierboven ook al. (die 5 regexpen)[/quote]Ja, maar die van mij zijn beter:P

  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
Yoepi :) :)

Nu barsten ze los, ff testen...

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 30 september 2000 17:33 schreef Jaapf het volgende:
Ja, maar die van mij zijn beter:P[/quote]Hrmz.. ben denk ik nog niet helemaal in staat om die beoordeling te kunnen leveren, maar ik zal ffies kijken. :P

:Y)

Verwijderd

Jaapf: http://* omzetten:
$string = preg_replace ("/([^w"=]])((ftp://)|(http://)([a-z]|[A-Z]|[0-9]|[-.])*.w{2,3})/", "1<a href="2">2</a>", $string);

Deze als voorbeeld, zelfde geldt voor de andere...

Paar dingen die opvallen.... ( Regexen in PHP zijn hoofdpijn doordat ze binnen een string zitten, dan krijg je dubbel gebackslashde constructies zoals . Nee, dank je. :) )

Als je hem delimit met ! ofzo hoef je al je slashes niet te backquoten. Scheelt weer.

Je kunt de :// van ftp en http uit de haakjes halen, zo: (ftp|http)://.

Als hem case-insensitive maakt ( /i ), kun je in je character classes alleen [a-z0-9] gebruiken. ( Character classes geven al alternatie..., dus waarom de | ?? Zet gewoon je andere tekens ook in de char class...)
edit:

Die . en - zet je erg gewoon zo bij: [-a-z0-9.]. Als het eerste teken van een char class een - is geeft het geen range aan...


Dat hij goed werkt lijkt me sterk... Een pad wordt niet gematcht... Dat was de bedoeling? :?

Bedoeld als opbouwend kritiek... :)

  • paulh
  • Registratie: Juli 1999
  • Laatst online: 01-02 16:45
Tering .... jullie hebben me wat denkwerk bespaard :) :) :) ... Thanx

[ZwareMetalen.com] - [Kom in aktie tegen de CO2 maffia]


  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Nog een leuke dan: ;)<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>function check_email($email, $check_dns = false) //by chids @ www.zend.com
{
if(
(preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email))
||
(preg_match('/^.+\@(\\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/', $email))
)
{
if($check_dns)
{
$host = explode('@', $email);
// Check for MX record
if( checkdnsrr($host[1], 'MX') ) return true;
// Check for A record
if( checkdnsrr($host[1], 'A') ) return true;
// Check for CNAME record
if( checkdnsrr($host[1], 'CNAME') ) return true;
}
else
{
return true;
}
}
return false;
}[/quote]Met deze functie kun je een emailadres valideren. Daarnaast kun je opgeven of hij moet checken de hostnaam van dat email adres wel geldig is (dus, of die een DNS entry heeft). Kewl.. 8-)

:Y)

Verwijderd

Met deze functie kun je een emailadres valideren.

Mailadressen volgens de RFCs valideren is ietsje moeilijker...

Zal wel een script zoeken dat dat doet....

Dit Perl script kijkt of iets een (syntactisch) geldig mail adres is. (Ja, het is Perl, maar het globale idee moet te volgen zijn...)

De vraag is altijd hoe precies wil je zijn met kijken of iets "correct" is...

  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
Cool Tuinhark! die functie :)
Nog eens wat anders dan alleen het @je

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 01 oktober 2000 18:39 schreef Arien het volgende:
Mailadressen volgens de RFCs valideren is ietsje moeilijker... [/quote]:?

:Y)

Verwijderd

RFCs zijn Requests For Comments (zie bijvoorbeeld http://www.rfc-editor.org/), zeg maar internet standaarden.

Hier valt ook het formaat van e-mail adressen onder.

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Okee, ben nu met iets nieuws en interessants bezig. :P

Bij AnandTech's forum hebben ze zo'n leukigheidje met
[list]
[*]Item
[*]Item
[/list]

en dat daar dan

<ul>
<li>Item
<li>Item
</ul>

van wordt gemaakt. Maar het wil nog niet echt vorderen. Suggesties? :D

Ik heb nu:<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>$open = quotemeta("[list]");
$list = quotemeta("[*]");
$close = quotemeta("[/list]");

$expression = "!($open)(.*)(($list)(.*))+($close)!Ui";
$replacement = "<ul>\\2<li>\\5</ul>";
$this->text = preg_replace($expression, $replacement, $this->text);[/quote]:Y)

NB: Ik merkte met 'Bekijk bericht' (voordat ik hem submitte) dat Arjen's Topix deze feature ook al heeft! :9~

Verwijderd

Zijn hier ook mensen die op een forum waar je HTML aan wilt hebben, toch HTML code neer kan zetten?

tussen [ code ] en [ /code ]?

(p.s. dit is zo maar een uitdaging als je zin hebt, ik ga het na het eten ook fff zelf proberen ;) )

Verwijderd

laat maar das heel simpel
& lt ; = < (zonder spaties)
& gt ; = > (zonder spaties)

eitje ;)

  • tomato
  • Registratie: November 1999
  • Niet online
Da's een coole Tuinhark, die ga ik ook proberen! :)

  • tomato
  • Registratie: November 1999
  • Niet online
<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>$a = explode("[_list]", $tekst);
for ($i=0; $i<count($a); $i++) {
$b = strpos($a[$i], "[_/list]") - 1;
if ($b + 1)
$a[$i] = str_replace("*", "<LI>", substr($a[$i], 0, $b))."</UL>".substr($a[$i], $b + 8);
}
$tekst = implode("<UL>", $a);[/quote]Zonder _ dus...

Verwijderd

<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 01 oktober 2000 06:33 schreef Arien het volgende:
Jaapf: http://* omzetten:
$string = preg_replace ("/([^w"=]])((ftp://)|(http://)([a-z]|[A-Z]|[0-9]|[-.])*.w{2,3})/", "1<a href="2">2</a>", $string);

Deze als voorbeeld, zelfde geldt voor de andere...

Paar dingen die opvallen.... ( Regexen in PHP zijn hoofdpijn doordat ze binnen een string zitten, dan krijg je dubbel gebackslashde constructies zoals . Nee, dank je. :) )

Als je hem delimit met ! ofzo hoef je al je slashes niet te backquoten. Scheelt weer.

Je kunt de :// van ftp en http uit de haakjes halen, zo: (ftp|http)://.

Als hem case-insensitive maakt ( /i ), kun je in je character classes alleen [a-z0-9] gebruiken. ( Character classes geven al alternatie..., dus waarom de | ?? Zet gewoon je andere tekens ook in de char class...)
edit:

Die . en - zet je erg gewoon zo bij: [-a-z0-9.]. Als het eerste teken van een char class een - is geeft het geen range aan...


Dat hij goed werkt lijkt me sterk... Een pad wordt niet gematcht... Dat was de bedoeling? :?

Bedoeld als opbouwend kritiek... :)[/quote]Ja, je hebt inderdaad gelijk;) Voor die character classes heb ik vooral haakjes gebruikt omdat ik het toendertijd makkelijker te lezen vond.

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Nieuw probeersel, maar het werkt nog niet: |:(<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>$open = quotemeta("[list]");
$item = quotemeta("[*]");
$close = quotemeta("[/list]");
do
{
$expression = "!(" . $open . ".*)(" . $item . ")(.+\n.*" . $close . ")!Ui";
$replacement = "\\1<li>\\3";
$old = $this->text;
$this->text = preg_replace($expression, $replacement, $this->text);
}
while($old != $this->text);
$expression = "!($open)(.*<li>.*)($close)!Ui";
$replacement = "<ul>\\2</ul>";
$this->text = preg_replace($expression, $replacement, $this->text);[/quote]Dus, eerst alle [*] die tussen [list] en [/list] staan vervangen door <li> en daarna alle [list] en [/list] waar <li> tussen staat vervangen.

Leuk, maar het werkt nog niet. Hnngg....

:Y)

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Het probleem is dattie slechts 1x loopt. Dus, wanneer de vergelijking ts. $old en $this->text wordt gemaakt, zijn ze nog steeds gelijk. Maw, die preg_replace binnen de loop is unsuccesful. :(

:Y)

Verwijderd

Het probleem is dattie slechts 1x loopt. Maw, die preg_replace binnen de loop is unsuccesful. :(

Probeer eens een g aan het eind van je regex te zetten: /regex/g

:)

edit:

Of in jouw geval dus !....!g

En misschien is de uitleg ook wel handig... g voor global, dus alle voorkomende vervangen.

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Tnx, Arien, maar dat is hem niet: :'(

Warning: Unknown modifier 'g'

:Y)

Verwijderd

Tnx, Arien, maar dat is hem niet: :'(

Warning: Unknown modifier 'g'


Klopt, zit te Perl-en in PHP en dat werkt niet. preg_replace vervangt al alle matchen.

Zoek ff voor je.

Verwijderd

Het probleem is dattie slechts 1x loopt.

Volgens de doc van preg_replace kan je subject als array gebruiken en voert de functie de replace uit voor elk van de elementen. Misschien helpt dat? (Weet niet wat $old is en waarom je vergelijkt)

Of zit de fout in de while?

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 04 oktober 2000 21:03 schreef Arien het volgende:
Volgens de doc van <a href="http://php.net/manual/function.preg-replace.php" target="_blank">preg_replace</a> kan je subject als array gebruiken en voert de functie de replace uit voor elk van de elementen. Misschien helpt dat? (Weet niet wat $old is en waarom je vergelijkt)

Of zit de fout in de while?[/quote]Tnx. Was alweer vergeten dat je idd met arrays kunt werken, maar dat is helaas niet echt relevant.

Kijk:<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>$open = quotemeta("[list]");
$close = quotemeta("[/list]");
$item = quotemeta("[*]");
$expression[] = "!($open.*)($item)(.+\n.*$close)!Ui";
$replacement[] = "\\1<li>\\3";
$expression[] = "!($open)(.*<li>.*)($close)!Ui";
$replacement[] = "<ul>\\2</ul>";
$this->text = preg_replace($expression, $replacement, $this->text);[/quote]Nu heb ik 2 regexps uitgevoerd met 1 functie aanroep. En als ik $this->text zou exploden (op bv \n) naar een array, maakt dat ook niet veel uit lijkt me.

(En ja, dit is weer een ander fragment dan eerst, maar ik probeer ook vele dingen uit. :))

Tnx Arien.

Wie volgt?! ;)

:Y)

  • tomato
  • Registratie: November 1999
  • Niet online
Wat ik net gaf doet het toch goed, of mis ik iets? Ja, het is geen regex, maar daar werd ik even gek van :+
Straks toch nog eens proberen met regexen...

Verwijderd

Nu heb ik 2 regexps uitgevoerd met 1 functie aanroep. En als ik $this->text zou exploden (op bv \n) naar een array, maakt dat ook niet veel uit lijkt me.

Wat probeer je te doen? :? Ik ben de draad een beetje kwijt...

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 04 oktober 2000 22:00 schreef Arien het volgende:
Wat probeer je te doen? :? Ik ben de draad een beetje kwijt...[/quote]Ehmm.. Jij begon over arrays voeren aan preg_replace()... :+ Nevermind. ;) 't Gaat er om dat het eigenlijk geen bal uitmaakt of je nu string arrays voert of plain strings. Toch? :) Of had je een speciale taktiek/techniek achter de hand? :D<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 04 oktober 2000 21:48 schreef tomato het volgende:
Wat ik net gaf doet het toch goed, of mis ik iets? Ja, het is geen regex, maar daar werd ik even gek van :+
Straks toch nog eens proberen met regexen...[/quote]Demm, wist dat ik iets vergeten was. :+ En nee... het werkt dus niet.. :'( Zal zo het resultaat nog even opzoeken.

(Eigenlijk moet ik nu even verder met m'n brief voor Bedrijfs Communicatie.. |:()

:Y)

Verwijderd

Ehmm.. Jij begon over arrays voeren aan preg_replace()... :+ Nevermind. ;)

Dan heb je die loop niet nodig... Ik dacht dat daar je probleem zat. :)

't Gaat er om dat het eigenlijk geen bal uitmaakt of je nu string arrays voert of plain strings. Toch? :)

Nee, het antwoord wordt hetzelfde, het typt wat minder...

Maar wat wil je nou in de loop doen? Dan kan ik je vraag waarom het niet werkt ook beantwoorden.

(Moet eigenlijk even heftig proggen, maar geen zin en zo...)

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 04 oktober 2000 22:33 schreef Tuinhark het volgende:
Zal zo het resultaat nog even opzoeken.[/quote]Zie hier dan:<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR> [list]
<UL>[*]Boe
<UL>[*]Koe
<UL>[*]Blaat
<UL>[/list][/quote]Nou ja... zullen we maar zeggen: 'close'. ;)

:Y)

NB: Arjen gebruikt kennelijk ook gewoon een str_replace in Topix..

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Dan heb je die loop niet nodig... Ik dacht dat daar je probleem zat. :)

Maar wat wil je nou in de loop doen? Dan kan ik je vraag waarom het niet werkt ook beantwoorden.
Nee, volgens mij heb ik dat eigenlijk ook niet nodig... Ik zat weer wazig bezig te zijn ofzo. :P

Hmm, we denken er nog ff over na. Maar nu eerst slapen. :)

:Y)

  • tomato
  • Registratie: November 1999
  • Niet online
Ik heb nog even wat veranderd (gisteren beetje slaperig :)) en nu lijkt ie het toch redelijk te doen (checkt ook of list wel afgesloten wordt):<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>$a = explode("[_list]", $tekst);
for ($i=0; $i<count($a); $i++) {
$b = strpos($a[$i], "[_/list]");
if ($b)
$a[$i] = "<UL>".str_replace("*", "<LI>", substr($a[$i], 0, $b))."</UL>".substr($a[$i], $b + 7);
}
$tekst = implode("", $a);[/quote]Hij is alleen wel case sensitive, maar daar kun je zo wat aan doen. Natuurlijk is het met een regex mooier, dat ga ik ook nog even proberen.

edit:

Euhm...weer zonder _ dus :(

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Ik zit op dit moment op school, 3 fokking tussenuren :( en kan dit dingetje nu niet proberen. |:(

Wanneer ik thuis kom, zal ik het gelijk testen! :)

:Y)

  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

Topicstarter
Leuk, zie deze topic opeens weer hier staan :)

Ga die list ook ff proberen :)

Thuinhark:
3 fokking tussenuren

ehhh wees blij man, ik had vandaag weer de volle hap :(

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

tomato! Dat wassem! :D Way to go!

Alleen moet je niet '*' vervangen door <LI>, maar '[*]. Maar ik denk dat je dat wel wist en dat je gewoon * gebruikte omdat anders Topix de boel zou gaan processen. ;)

:Y)

NB: Kee, had 'em dus niet gelijk getest toen ik thuis kwam van school, maar nu net pas. Ik ben druk bezig geweest om het demo forum van YapBB te upgraden naar de nieuwe versie. :+

  • tomato
  • Registratie: November 1999
  • Niet online
Maar ik denk dat je dat wel wist en dat je gewoon * gebruikte omdat anders Topix de boel zou gaan processen.

Oeps, ik had je [ *]'s voor *'s aangezien :o
Te snel gelezen... Maar ik vind het btw eigenlijk ook best logisch/makkelijk dat je gewoon enkel een * gebruikt ipv [ *], maar ieder zijn smaak en, belangrijker, er is blijkbaar al een standaard.

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

tomato > De reden dat je [*] gebruikt en niet gewoon * is dat wanneer je een * gebruikt in een lap tekst in de opsomming, die dan ook als item zou worden geconverteerd. Nou ehm... in een regexp wél anyway. :P Ik zal eerst je scrippie wat beter moeten begrijpen om te kunnen vaststellen of jouw scrippie dat wel of niet doet. :)

:Y)

  • tomato
  • Registratie: November 1999
  • Niet online
Die van mij doet dat dan ook ja, maar dat nam ik maar voor lief. Je houdt het natuurlijk altijd, nu kun je geen • in je opsomming gebruiken en zo vaak zal het toch niet voorkomen...

  • Jasper
  • Registratie: Juni 1999
  • Laatst online: 10:26
Hej Tuinhark, waarom niet gewoon zo: Afbeeldingslocatie: http://www.clubned.com/~jasper/tuinhark.gif ??

;)

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

:9~

Nou omdat er helaas geen smiley code aan hangt. |:(
;)

Afbeeldingslocatie: http://www.clubned.com/~jasper/tuinhark.gif

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 20-02 10:01

chem

Reist de wereld rond

toch wel

f t p : / / u s e r : n a m e @ w w w . f t p . n l /

sorry voor de spaties maar anders gaat t.net vast raar doen...

wie fixt 'm?

ps. hij maakt er een mailto: van

Klaar voor een nieuwe uitdaging.


  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro


  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Kewl, hier gaat het goed. :)

Hier mijn oplossing (dus ipv de 'oude' ftp:// regexp):

$text = preg_replace("!(^|[ \n\r\t])((ftp://)(([a-z0-9_-])(:([a-z0-9_-]))?\@)?(www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)!", "\\1<a href=\"\\2\">\\2</a>", $text);

Ongetest baai de weej.

:Y)

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Vervang de :( even door een : ( (zonder spatie).

edit:

En zet een i achter het 2e uitroepteken. :)


:Y)

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Laat maar... |:(

Leuk, nieuwe uitdaging.. ;)

:Y)

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 20-02 10:01

chem

Reist de wereld rond

ik wacht in spanning af :-)

Klaar voor een nieuwe uitdaging.


Verwijderd

Leuk, nieuwe uitdaging.. ;)

Pak er een RFC bij voor ftp adressen (rfc-editor.org) en veel plezier :)

(Kijk trouwens even in dat draadje over bash...)

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

Ik heb al wat en hij werkt, behalve als je een @ in het password hebt zitten (bij sommige ftp servers geef je een email adres als password):

$text = preg_replace("!(^|[ \n\r\t])((ftp://)(([a-z0-9_-]+)(:([a-z0-9_-]+([a-z0-9_-]+\@)?))?\@)?(www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)!i", "\\1<a href=\"\\2\">\\2</a>", $text);

Echter, de email regexp moet ook even worden aangepast:

$text = eregi_replace("((^|[ \n\r\t])[a-z_-][a-z0-9\._-]*@[a-z0-9_-]+(\.[a-z0-9_-]+)+)","<a href=mailto:\\1>\\1</a>",$text);

:Y)

  • Jasper
  • Registratie: Juni 1999
  • Laatst online: 10:26
Valt me een beetje tegen dat je het niet kan Chem! ;):)

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 20-02 10:01

chem

Reist de wereld rond

hmz na het bouwen van eigen forum had ik hier ff geen zin in...

btw tuinhark als je wilt, kun je dan m'n forum testen & suggesties geven?

jasper> moet jij niet internetten ofzo? :)

Klaar voor een nieuwe uitdaging.


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 20-02 10:01

chem

Reist de wereld rond

<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 11 oktober 2000 20:35 schreef Jasper het volgende:
Valt me een beetje tegen dat je het niet kan Chem! ;):)[/quote]he we gaan niet flamen he JASPER!

zie je morgen?

Martijn op de account van [chem]

Klaar voor een nieuwe uitdaging.


  • Jasper
  • Registratie: Juni 1999
  • Laatst online: 10:26
:):)

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 18-02 19:40

Tuinhark

Retro

<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>btw tuinhark als je wilt, kun je dan m'n forum testen & suggesties geven?[/quote]Mwoah... evt... :) URL?

:Y)
Pagina: 1