Gathering of Tweakers

Quicksearch
Ik zou graag de gebruikers van mijn website toelaten de volgende html-tags te gebruiker: <b><i><u><a><img>. Deze worden vervolgens vervangen door een span-tag om het geheel netjes te houden. Nu zit ik met het probleem dat alle andere tags onklaar moeten gemaakt worden. Daarom had ik het gedacht van alle "<" en ">" te vervangen door "
code:
1
&lt;

" en "
code:
1
&gt;

". Nu heb ik een beetje zitten zoeken hoe ik mijn regular expressions moet aanpassen om alles tags die niet beginnen met <span of <a of <img te vervangen door "<".

Tot nu toe is dit mijn code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function ubb($var1) {
         
    $var1    = preg_replace('/\<b\>(.*?)\<\/b\>/i',     '<span class="strong">\\1</span>',         $var1);
    $var1    = preg_replace('/\<u\>(.*?)\<\/u\>/i',     '<span class="underline">\\1</span>',     $var1);
    $var1    = preg_replace('/\<i\>(.*?)\<\/i\>/i',     '<span class="italic">\\1</span>',         $var1);
    $var1    = preg_replace('/\<a href="(.*?)">(.*?)\<\/a\>/i',     '<a href="\\1" target="_blanc" title="test">\\2</a>',    $var1);
    $var1    = preg_replace('/\<img src="(.*?)"\>/i',     '<img src="\\1" alt="" title="" border="0">',         $var1);
        
    $var1    = preg_replace('/<noscript>/i',     '&lt;noscript&gt;',         $var1);
    $var1    = preg_replace('/<\/noscript>/i',     '&lt;/noscript&gt;',         $var1);
            
    $var1    = preg_replace('/<^span/i',     '&lt;',         $var1);
            
    return $var1;
        
}

Ik heb getracht via ^ alles er uit te filteren, maar dit werkt dus niet. Iemand een ideetje? Of verbeteringen want ik ben niet zo goed met dat soort zaken..
 
waarom vervang je niet alle < en > eerst en daarna alle
code:
1
&lt;b&gt;

en dergelijk daarna weer terug...?

Edwardvb wijzigde dit bericht 09-07-2008 13:01 (6%)

 
Deze functie iets? http://nl3.php.net/strip_tags
PHP:

1
2
<?php
 //de tweede parameter in de functie bevat toegestane tags
echo strip_tags($myText'<b><i><u><a><img>');
?>

Rekcor wijzigde dit bericht 09-07-2008 13:22 (19%)

 
Heeft nu een APNG icon

quote:
Rekcor schreef op woensdag 09 juli 2008 @ 13:21:
Deze functie iets? http://nl3.php.net/strip_tags
PHP:

1
2
<?php
 //de tweede parameter in de functie bevat toegestane tags
echo strip_tags($myText'<b><i><u><a><img>');
?>

Dat wil je niet hebben. Dan stript hij ook de inhoud van de tags. Met een tech/tweakers achtige website ook niet wenselijk. De methode van Edward lijkt mij beter.

Heb nu een Animated PNG icon. Werkt in alle moderne browsers (Firefox en Opera).

Je functie heet al 'ubb', waarom dan HTML toestaan?
Zoals op vele fora (incl. tweakers), gebruik je vierkant haken voor ubb, dan ontloop je je problemen.
Dan gewoon < en > vervangen, en daarna de ubb tags fixen.
Ik heb het aangepast naar Edward zijn versie en heb nu
code:
1
2
3
4
5
6
7
8
9
10
    $var1    = preg_replace('/</i',     '&lt;',         $var1);
    $var1    = preg_replace('/>/i',     '&gt;',         $var1);
         
    $var1    = preg_replace('/&lt;b&gt;(.*?)&lt;\/b&gt;/i',     '<span class="strong">\\1</span>',         $var1);
    $var1    = preg_replace('/&lt;u&gt;(.*?)&lt;\/u&gt;/i',     '<span class="underline">\\1</span>',     $var1);
    $var1    = preg_replace('/&lt;i&gt;(.*?)&lt;\/i&gt;/i',     '<span class="italic">\\1</span>',         $var1);
    $var1    = preg_replace('/&lt;a href="(.*?)"&gt;(.*?)&lt;\/a&gt;/i',     '<a href="\\1" target="_blanc" title="test">\\2</a>',    $var1);
    $var1    = preg_replace('/&lt;img src="(.*?)"&gt;/i',     '<img src="\\1" alt="" title="" border="0">',         $var1);
            
    return $var1;

Maar de replace functie voor een anchor werkt nog steeds niet... Dat geeft nu als output: <a href="test">test</a>

Ik heb het verander naar rechte haken en nu werkt het wel.

xchng wijzigde dit bericht 09-07-2008 15:06 (3%)

 
quote:
Sebazzz schreef op woensdag 09 juli 2008 @ 13:24:
Dat wil je niet hebben. Dan stript hij ook de inhoud van de tags.
:?
PHP:

1
2
3
4
<?php
$html = "Striptags laat de <i>inhoud</i> van de tags gewoon netjes staan hoor:";
echo $html;
echo '<br>';
echo strip_tags($html);
?>

Geeft gewoon netjes:
quote:
Striptags laat de inhoud van de tags gewoon netjes staan hoor:
Striptags laat de inhoud van de tags gewoon netjes staan hoor:
dus de inhoud blijft staan.
quote:
Sebazzz schreef op woensdag 09 juli 2008 @ 13:24:
Met een tech/tweakers achtige website ook niet wenselijk. De methode van Edward lijkt mij beter.
Deze opmerking begrijp ik niet? Bedoel je dat simpele oplossingen op een tech/tweakers-achtige website niet wenselijk zijn? ;)
 
Heeft nu een APNG icon

Bekijk dat example nog eens. Je ziet dat alles tussen <!-- en --> verdwijnt.

Heb nu een Animated PNG icon. Werkt in alle moderne browsers (Firefox en Opera).

quote:
Sebazzz schreef op woensdag 09 juli 2008 @ 15:28:
Bekijk dat example nog eens. Je ziet dat alles tussen <!-- en --> verdwijnt.
Goed, het is bijna vijf uur (dus waarschijnlijk ligt het daar aan), maar ik kan geen example met <!-- en --> vinden? Ook als ik in de browser zoek op '<!-- ' krijg ik alleen jouw post :).

In ieder geval:
PHP:

1
2
<?php
$html = "<!-- Comment --> Volgens mij laat striptags de <i>tekst</i> in de tags gewoon staan";
echo strip_tags($html);
?>

geeft:
HTML:
1
<!-- Comment -->Volgens mij laat striptags the tekst in de tags gewoon staan

 
Heeft nu een APNG icon

Op de php manual natuurlijk he. Sorry. vijf uur ja :P
PHP:
1
2
3
4
5
6
7
8
<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

// Allow <p> and <a>
echo strip_tags($text'<p><a>');
?>


HTML:
1
2
Test paragraph. Other text
<p>Test paragraph.</p> <a href="#fragment">Other text</a>

Bovendien worden attributen op tags niet gestript. Attributen zoals mouseover en style. Ik krijg misschien geen gelijk, maar ik heb het wel :p

Sebazzz wijzigde dit bericht 09-07-2008 16:29 (15%)

Heb nu een Animated PNG icon. Werkt in alle moderne browsers (Firefox en Opera).

quote:
Sebazzz schreef op woensdag 09 juli 2008 @ 16:25:
Bovendien worden attributen op tags niet gestript. Attributen zoals mouseover en style. Ik krijg misschien geen gelijk, maar ik heb het wel :p
Bij deze! (was vergeten mijn pagina te refreshen 8)7)
 
Misschien een beetje mosterd na de maaltijd maar had dit:
PHP:

1
<?php
$var1    = preg_replace('/<^span/i',     '&lt;',         $var1);
?>

Niet simpel gekund met een negative lookahead? Iets als:
PHP:

1
<?php
$var1    = preg_replace('/<(?!span|img|a href)/i',     '&lt;',         $var1);
?>

 


© 1998-2008 Tweakers.net BV - Based on React - Hosted by True - Served by Aphaea

© 1998-2008 Tweakers.net BV - Based on React - Hosted by True - Served by Aphaea

[RSS][XML]

Update Tracker

Active Topics
Active Topics
Frontpage Nieuws
Frontpage Nieuws