[link] wel, [link=] niet.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
function ubbpage($content)
{
nl2br($content);
$content = preg_replace("#\[b\](.*?)\[/b\]#si", "<strong>$1</strong>", $content);
$content = preg_replace("#\[i\](.*?)\[/i\]#si", "<em>$1</em>", $content);
if(preg_match("#\[link\]([a-z0-9:\?\.&/]*)\[/link\]#is",$content))
{
$content = addslashes($content);
$content = preg_replace("#\[link\](.*?)\[/link\]#si", "<a href=\"$1\" target=\"_blank\">$1</a>", $content);
}
if(preg_match("#\[link=([a-z0-9:\?\.&/]*)\](.*?)\[/link\]#is",$content))
{
$content = addslashes($content);
$content = preg_replace("#\[link=(.*?)\](.*?)\[/link\]#si", "<a href=\"$1\" target=\"_blank\">$2</a>", $content);
}
return $content;
}
?>
function ubbpage($content)
{
nl2br($content);
$content = preg_replace("#\[b\](.*?)\[/b\]#si", "<strong>$1</strong>", $content);
$content = preg_replace("#\[i\](.*?)\[/i\]#si", "<em>$1</em>", $content);
if(preg_match("#\[link\]([a-z0-9:\?\.&/]*)\[/link\]#is",$content))
{
$content = addslashes($content);
$content = preg_replace("#\[link\](.*?)\[/link\]#si", "<a href=\"$1\" target=\"_blank\">$1</a>", $content);
}
if(preg_match("#\[link=([a-z0-9:\?\.&/]*)\](.*?)\[/link\]#is",$content))
{
$content = addslashes($content);
$content = preg_replace("#\[link=(.*?)\](.*?)\[/link\]#si", "<a href=\"$1\" target=\"_blank\">$2</a>", $content);
}
return $content;
}
?>
Nu werkt [link]http[/link] goed, [link=http]lol[/link] werkt ook.
Daaren tegen werkt
[link][b]http[/link] wel, maar [link=[b]]http[/link] ook! Dat is fout
Zoals ik het in het script heb staan, lijkt me dat het niet zou moeten werken, of ligt het aan mij? Ik gebruik hetzelfde stukje als bij [link] voor het stukje [link=], maar daar werkt het niet.
Hoe zorg ik ervoor dat het wel werkt? Zodat [link=[b]] niet werkt, maar [link=http][b][/link] wel?
Gewijzigd op 01/01/1970 01:00:00 door Iltar van der berg
Code (php)
1
2
3
4
2
3
4
<?php
$content = "[link=[b]]iets[/link]";
var_dump(preg_match("#\[link=([a-z0-9:\?\.&/]*)\](.*?)\[/link\]#is",$content));
?>
$content = "[link=[b]]iets[/link]";
var_dump(preg_match("#\[link=([a-z0-9:\?\.&/]*)\](.*?)\[/link\]#is",$content));
?>
Hier komt gewoon false uit, dus dat werkt gewoon.
Waardoor het bij jou fout gaat is dat je eerst de [b] vervangt en dan pas een eventuele [link] controleert en vervangt. Dat zou je dus even moeten aanpassen.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Dus door de < en > ziet hij het niet als invalid..
dus als ik de bold tags onderaan zou zetten, zou het wel werken?
Edit:
werkt niet...
Ik snap niet waarom hij het niet doet, want bij de andere preg_match werkt het wel
werkt niet...
Ik snap niet waarom hij het niet doet, want bij de andere preg_match werkt het wel
Gewijzigd op 01/01/1970 01:00:00 door iltar van der berg
Ik snap er niets van, als ik het tweede blok erbij heb, flipt alles, maar als ik dat met // ervoor heb, werkt het eerste perfect, maar dan heb ik die andere weer niet :(
Je hebt echter nog geen afhandeling van de gevallen waarin de syntax niet correct is. Kortom, als de [link] syntax niet correct is zal er niets vervangen worden en daardoor $content ook niet veranderen...
Zou jij die 2 blocken goed kunnen maken?
Ik heb nu als output:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<a href="[b" target="_blank">http://www.infernogm.com]dit is een link</a>
<br />
<a href="javascript:alert(\\\'hallo\\\')" target="_blank">dit is een link</a>
<br />
<a href="http://www.infernogm.com" target="_blank">http://www.infernogm.com</a>
<br />
<br />
<a href=\"[b]http://www.infernogm.com\" target=\"_blank\">[b]http://www.infernogm.com</a>
<br />
<a href=\"javascript:alert(\\\'hallo\\\')\" target=\"_blank\">javascript:alert(\\\'hallo\\\')</a>
<br />
<a href=\"http://www.infernogm.com\" target=\"_blank\">http://www.infernogm.com</a>
<br />
<br />
<br />
<a href="javascript:alert(\\\'hallo\\\')" target="_blank">dit is een link</a>
<br />
<a href="http://www.infernogm.com" target="_blank">http://www.infernogm.com</a>
<br />
<br />
<a href=\"[b]http://www.infernogm.com\" target=\"_blank\">[b]http://www.infernogm.com</a>
<br />
<a href=\"javascript:alert(\\\'hallo\\\')\" target=\"_blank\">javascript:alert(\\\'hallo\\\')</a>
<br />
<a href=\"http://www.infernogm.com\" target=\"_blank\">http://www.infernogm.com</a>
<br />
<br />
http://www.infernogm.com]dit is een link
dit is een link
http://www.infernogm.com
[b]http://www.infernogm.com
javascript:alert(\\\'hallo\\\')
http://www.infernogm.com
Met als input:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
$content = '';
$content .= '[link=[b]http://www.infernogm.com]dit is een link[/link]<br />';
$content .= '[link=javascript:alert(\'hallo\')]dit is een link[/link]<br />';
$content .= '[link=http://www.infernogm.com]http://www.infernogm.com[/link]<br />';
$content .= '<br />';
$content .= '[link][b]http://www.infernogm.com[/link]<br />';
$content .= '[link]javascript:alert(\'hallo\')[/link]<br />';
$content .= '[link]http://www.infernogm.com[/link]<br />';
echo ubbpage($content);
function ubbpage($content)
{
nl2br($content);
$content = preg_replace("#\[b\](.*?)\[/b\]#si", "<strong>$1</strong>", $content);
$content = preg_replace("#\[i\](.*?)\[/i\]#si", "<em>$1</em>", $content);
$content = preg_replace("#\[u\](.*?)\[/u\]#si", "<u>$1</u>", $content);
$content = preg_replace("#\[s\](.*?)\[/s\]#si", "<s>$1</s>", $content);
if(preg_match("#\[link\]([a-z0-9:\?\.&/]*)\[/link\]#is",$content))
{
$content = addslashes($content);
$content = preg_replace("#\[link\](.*?)\[/link\]#si", "<a href=\"$1\" target=\"_blank\">$1</a>", $content);
}
if(preg_match("#\[link=([a-z0-9:\?\.&/]*)\](.*?)\[/link\]#is",$content))
{
$content = addslashes($content);
$content = preg_replace("#\[link=(.*?)\](.*?)\[/link\]#si", "<a href=\"$1\" target=\"_blank\">$2</a>", $content);
}
return $content;
}
?>
$content = '';
$content .= '[link=[b]http://www.infernogm.com]dit is een link[/link]<br />';
$content .= '[link=javascript:alert(\'hallo\')]dit is een link[/link]<br />';
$content .= '[link=http://www.infernogm.com]http://www.infernogm.com[/link]<br />';
$content .= '<br />';
$content .= '[link][b]http://www.infernogm.com[/link]<br />';
$content .= '[link]javascript:alert(\'hallo\')[/link]<br />';
$content .= '[link]http://www.infernogm.com[/link]<br />';
echo ubbpage($content);
function ubbpage($content)
{
nl2br($content);
$content = preg_replace("#\[b\](.*?)\[/b\]#si", "<strong>$1</strong>", $content);
$content = preg_replace("#\[i\](.*?)\[/i\]#si", "<em>$1</em>", $content);
$content = preg_replace("#\[u\](.*?)\[/u\]#si", "<u>$1</u>", $content);
$content = preg_replace("#\[s\](.*?)\[/s\]#si", "<s>$1</s>", $content);
if(preg_match("#\[link\]([a-z0-9:\?\.&/]*)\[/link\]#is",$content))
{
$content = addslashes($content);
$content = preg_replace("#\[link\](.*?)\[/link\]#si", "<a href=\"$1\" target=\"_blank\">$1</a>", $content);
}
if(preg_match("#\[link=([a-z0-9:\?\.&/]*)\](.*?)\[/link\]#is",$content))
{
$content = addslashes($content);
$content = preg_replace("#\[link=(.*?)\](.*?)\[/link\]#si", "<a href=\"$1\" target=\"_blank\">$2</a>", $content);
}
return $content;
}
?>
als er dus iets niet aan klopt, moet hij de waarde laten zoals het is, zodat je kan zien wat de fout is. anders moet hij er een link van maken. Ik snap niet waarom het nu zo vreemd werkt.
Gewijzigd op 01/01/1970 01:00:00 door iltar van der berg