bepaalde html tags toestaan

Hulp nodig bij je installatie of kom je ergens niet uit? Probeer phpBB3! Problemen lossen we samen met je op.
phpBB 3.0 is End of support per 1 januari 2017. Dit forum is hier enkel ter archief. Het wordt aangeraden te upgraden naar phpBB 3.2
Forumregels
phpBB 3.0 is End of support per 1 januari 2017. Dit forum is hier enkel ter archief. Het wordt aangeraden te upgraden naar phpBB 3.2
sandra
Berichten: 122
Lid geworden op: 25 mei 2003, 12:55
Contacteer:

Re: bepaalde html tags toestaan

Bericht door sandra » 03 aug 2008, 15:22

uhm hoe bedoel je?

het is nu in ieder geval zo dat er ' of " weleens in de tekst voorkomt (bv door tekst foto's of door quote="naam") en ik 'n manier moet vinden zodat de query gewoon goed uitgevoerd kan worden...

sandra
Berichten: 122
Lid geworden op: 25 mei 2003, 12:55
Contacteer:

Re: bepaalde html tags toestaan

Bericht door sandra » 03 aug 2008, 15:34

Of ik moet het toch als file doen, dus via php open ik de file, wijzig het, en upload dan uiteindelijk het .sql bestand via phpmyadmin....maar weet niet goed hoe dat met php moet....heb alleen ervaring met data wegschrijven naar 'n bestand, geen ervaring met 'n bestand openen en die wijzigen.

dit is momenteel de complete code:

Code: Selecteer alles

<?php
$c = mysql_connect("localhost",$login,$wachtwoord);
mysql_select_db("phpbb2");


$DB_query = mysql_query("select * from phpbb_posts_text where post_text like '</a>' or post_text like '%<img%' ");
$DB_aantal = mysql_num_rows($DB_query);
$n=1;
while($DB_result = mysql_fetch_array($DB_query)) {
  $message = $DB_result[post_text];
//We beginnen met de afbeeldingen, want in een afbeelding zal nooit iets genest zijn.
//Met onderstaande wordt gezocht naar  een img tag. Omdat de volgorde van attributen binnen tags niet altijd vaststaat, is deze tussenstap nodig.
preg_match_all('#\<img(.*?)\>#i',$message, $matches );
foreach ($matches as $totaalimg) {}
unset($matches);
foreach ($totaalimg as $totaal2img)
    {
    //Vervolgens zoeken we de src met double  quotes op,
    preg_match_all('#src=\"(.*?)\"#i',$totaal2img, $matches );
    foreach ($matches as $preimg){}
    unset($matches);
    //Geen img tag met double quotes? Dan zou het single quotes moeten hebben
    $aantal=count($preimg);
    if ($aantal == 0) {
    	unset ($preimg);
      preg_match_all("#src=\'(.*?)\'#i",$totaal2img, $matches );
      foreach ($matches as $preimg){}
      unset ($matches);
			$aantal=count($preimg);
    	if ($aantal == 0) {
        unset ($preimg);
        preg_match_all("#src=\'\'(.*?)\'\'#i",$totaal2img, $matches );
        foreach ($matches as $preimg){}
        unset ($matches);
      }//afsluiting '' (dubben enkel)
		}//afsluiting '
    //Met $preimg hebben we de bron van het plaatje. Nu dat omzetten naar een goede BBcode en dat in de plaats van het origneel zetten
    $message = preg_replace('#\<img(.*?)\>#i', '[img]'.$preimg[0].'[/img]', $message);
}

//Nu de links. Dit werkt overigens alleen voor [url=www.example.com]omschrijving[/url], maar het lijkt me dat dat ook al het benodigde is.
//Ook hier weer zoeken naar het totaal, daarna kunnen we pas inzoomen op het href-attribuut
preg_match_all('#\<a(.*?)\>#is',$message, $matches );
foreach ($matches as $totaallink){}
unset ($matches);
foreach ($totaallink as $totaal2link)
    {
    //Vervolgens zoeken we de src met double  quotes op,
    preg_match_all('#href=\"(.*?)\"#i',$totaal2link, $matches );
    foreach ($matches as $prelink){}
    unset($matches);
    //Geen link tag met double quotes? Dan zou het single quotes moeten hebben
    $aantal=count($prelink);
    if ($aantal == 0)
        {
        unset ($prelink);
        preg_match_all("#href=\'(.*?)\'#i",$totaal2link, $matches );
        foreach ($matches as $prelink){}
        unset ($matches);
				$aantal=count($prelink);
    if ($aantal == 0)
        {
        unset ($prelink);
        preg_match_all("#href=\'\'(.*?)\'\'#i",$totaal2link, $matches );
        foreach ($matches as $prelink){}
        unset ($matches);
				
				}//afsluiting ''
        }//afsluiting '
    //Met $prelink hebben we de link. Nu dat omzetten naar een goede BBcode en dat in de plaats van het origneel zetten
    $message = preg_replace('#\<a(.*?)\>#i', '[url='.$prelink[0].']', $message);
    $message = preg_replace('#\<\/a\>#i', '[/url]', $message);
		
    }
	$quer = "update phpbb_posts_text set post_text='$message' where post_id=$DB_result[post_id]";
                echo "$n / $DB_aantal $quer \n";
	$DB_update = mysql_query($quer) or die(mysql_error());
	$n=$n+1;
}
?>

sandra
Berichten: 122
Lid geworden op: 25 mei 2003, 12:55
Contacteer:

Re: bepaalde html tags toestaan

Bericht door sandra » 03 aug 2008, 16:04

:D heb het nu zelf opgelost. eigenlijk zooo simpel...sorry dat ik eerst vroeg, had dus zelf kunnen vinden....maar php heeft zoveel mogelijkheden en je moet dan wel weten of het echt goed zal werken.
ik heb nu dit toegevoegd:
$message=addslashes($message);

En paar queries uitgevoerd, om te kijken of het goed gaat, en zowel bi " als ' gaat de query goed, en staat het zonder \ in de database. :D sorry, dit is zeker heel simpel, maar had niet gedacht dat het met zo 'n simpele manier zou kunnen.

Gebruikersavatar
Ger
Berichten: 4864
Lid geworden op: 03 jan 2006, 22:23
Locatie: 192.68.1.100
Contacteer:

Re: bepaalde html tags toestaan

Bericht door Ger » 03 aug 2008, 17:20

sandra schreef::D heb het nu zelf opgelost.
Mooi zo. :)

sandra
Berichten: 122
Lid geworden op: 25 mei 2003, 12:55
Contacteer:

Re: bepaalde html tags toestaan

Bericht door sandra » 04 aug 2008, 13:23

:( ik heb helaas weer een probleem, ik hoop dat je weer kan helpen.
Ik heb jouw script gedraaid en ik heb als test phpbb3 geinstalleerd. Het gaat goed, de plaatjes worden goed getoond! Alleen...soms zijn er meerdere foto's per post....en dat gaat nu niet goed, alle foto's worden dan 1 dezelfde foto. :( Achteraf logisch, hij zoekt iets met img op, zoekt de inhoud eruit, en vervang vervolgens alles wat <img is met de nieuwe code....Zo gaat het dan ook met de links.....
Ik hoop dat er een manier gevonden zal worden om dit op te lossen, ik heb zelf geen idee hoe....
dit is de complete code nu:

Code: Selecteer alles

<?php
$c = mysql_connect("..","..","..");
mysql_select_db("phpbb2");


$DB_query = mysql_query("select * from phpbb_posts_text where post_text like '<a href=%' or post_text like '%<img%' ");//
$DB_aantal = mysql_num_rows($DB_query);
$n=1;
while($DB_result = mysql_fetch_array($DB_query)) {
  $message = $DB_result[post_text];
//We beginnen met de afbeeldingen, want in een afbeelding zal nooit iets genest zijn.
//Met onderstaande wordt gezocht naar  een img tag. Omdat de volgorde van attributen binnen tags niet altijd vaststaat, is deze tussenstap nodig.
preg_match_all('#\<img(.*?)\>#i',$message, $matches );
foreach ($matches as $totaalimg) {}
unset($matches);
foreach ($totaalimg as $totaal2img)
    {
    //Vervolgens zoeken we de src met double  quotes op,
    preg_match_all('#src=\"(.*?)\"#i',$totaal2img, $matches );
    foreach ($matches as $preimg){}
    unset($matches);
    //Geen img tag met double quotes? Dan zou het single quotes moeten hebben
    $aantal=count($preimg);
    if ($aantal == 0) {
    	unset ($preimg);
      preg_match_all("#src=\'(.*?)\'#i",$totaal2img, $matches );
      foreach ($matches as $preimg){}
      unset ($matches);
			$aantal=count($preimg);
    	if ($aantal == 0) {
        unset ($preimg);
        preg_match_all("#src=\'\'(.*?)\'\'#i",$totaal2img, $matches );
        foreach ($matches as $preimg){}
        unset ($matches);
      }//afsluiting '' (dubben enkel)
		}//afsluiting '
    //Met $preimg hebben we de bron van het plaatje. Nu dat omzetten naar een goede BBcode en dat in de plaats van het origneel zetten
    $message = preg_replace('#\<img(.*?)\>#i', '[img]'.$preimg[0].'[/img]', $message);
}

//Nu de links. Dit werkt overigens alleen voor [url=www.example.com]omschrijving[/url], maar het lijkt me dat dat ook al het benodigde is.
//Ook hier weer zoeken naar het totaal, daarna kunnen we pas inzoomen op het href-attribuut
preg_match_all('#\<a(.*?)\>#is',$message, $matches );
foreach ($matches as $totaallink){}
unset ($matches);
foreach ($totaallink as $totaal2link)
    {
    //Vervolgens zoeken we de src met double  quotes op,
    preg_match_all('#href=\"(.*?)\"#i',$totaal2link, $matches );
    foreach ($matches as $prelink){}
    unset($matches);
    //Geen link tag met double quotes? Dan zou het single quotes moeten hebben
    $aantal=count($prelink);
    if ($aantal == 0)
        {
        unset ($prelink);
        preg_match_all("#href=\'(.*?)\'#i",$totaal2link, $matches );
        foreach ($matches as $prelink){}
        unset ($matches);
				$aantal=count($prelink);
    if ($aantal == 0)
        {
        unset ($prelink);
        preg_match_all("#href=\'\'(.*?)\'\'#i",$totaal2link, $matches );
        foreach ($matches as $prelink){}
        unset ($matches);
				}//afsluiting ''
        }//afsluiting '
    //Met $prelink hebben we de link. Nu dat omzetten naar een goede BBcode en dat in de plaats van het origneel zetten
    $message = preg_replace('#\<a(.*?)\>#i', '[url='.$prelink[0].']', $message);
    $message = preg_replace('#\<\/a\>#i', '[/url]', $message);
		
    }
		$message=addslashes($message);
	$quer = "update phpbb_posts_text set post_text='$message' where post_id=$DB_result[post_id]";
echo "$n / $DB_aantal\n";
	$DB_update = mysql_query($quer) or die(mysql_error());
		
		$n=$n+1;
}
?>
Misschien dat zoiets kan:
$message = preg_replace('#\<a(.....$prelink[0].....*?)\>#i', '[url='.$prelink[0].']', $message);
dus dat het met <a moet beginnen en met > moet eindigen en ergens daarin $prelink[0] moet voorkomen....

Alvast heel erg bedankt.....ben zelf heel blij als het eindelijk allemaal gelukt is, had echt niet gedacht dat overstappen van 2 naar 3 nog zoveel problemen kan opleveren.... :(

PS: ik gebruik momenteel nog phpbb2, dus dat het fout is gegaan is geen enkel probleem....had gewoon de database gekopieerd om te testen.

Gebruikersavatar
Ger
Berichten: 4864
Lid geworden op: 03 jan 2006, 22:23
Locatie: 192.68.1.100
Contacteer:

Re: bepaalde html tags toestaan

Bericht door Ger » 04 aug 2008, 17:49

Daar snap ik nou geen kont van. Ik heb even jouw code gepakt, daar de databasedingen uitgehaald een testmessage met meerdere plaatjes en links. En dan gaat het gewoon perfect bij mij.

Dit is de code die ik dan heb (incl testmessage):
Spoiler: bekijk

Code: Selecteer alles

<?php
$message='Falderie faldera, dit is een berichtje op het forum van Sandra. En weet je wat? Hier hebben een plaatje met een linkje: <a href="http://www.example.com/image_large.gif" target="_blank">testerdetest</a>
plaatje1<img src="http://www.example.com/image_small.gif" title="Klik voor grote afbeelding" alt="Kralenplaatje" width="320" height="240" />
plaatje2<img src="http://www.example.com/image_small.gif" title="Klik voor grote afbeelding" alt="Kralenplaatje" width="320" height="240" />
<a href="http://www.example.com/image_large.gif" target="_blank">linkje2</a>
<a href="http://www.example.com/image_large.gif" target="_blank">linkje3</a>
Dat was nou een mooi kralenplaatje.';
//We beginnen met de afbeeldingen, want in een afbeelding zal nooit iets genest zijn.
//Met onderstaande wordt gezocht naar  een img tag. Omdat de volgorde van attributen binnen tags niet altijd vaststaat, is deze tussenstap nodig.
preg_match_all('#\<img(.*?)\>#i',$message, $matches );
foreach ($matches as $totaalimg) {}
unset($matches);
foreach ($totaalimg as $totaal2img)
    {
    //Vervolgens zoeken we de src met double  quotes op,
    preg_match_all('#src=\"(.*?)\"#i',$totaal2img, $matches );
    foreach ($matches as $preimg){}
    unset($matches);
    //Geen img tag met double quotes? Dan zou het single quotes moeten hebben
    $aantal=count($preimg);
    if ($aantal == 0) 
        {
        unset ($preimg);
        preg_match_all("#src=\'(.*?)\'#i",$totaal2img, $matches );
        foreach ($matches as $preimg){}
        unset ($matches);
        $aantal=count($preimg);
        if ($aantal == 0) 
            {
            unset ($preimg);
            preg_match_all("#src=\'\'(.*?)\'\'#i",$totaal2img, $matches );
            foreach ($matches as $preimg){}
            unset ($matches);
            }//afsluiting '' (dubben enkel)
        }//afsluiting '
        
    //Met $preimg hebben we de bron van het plaatje. Nu dat omzetten naar een goede BBcode en dat in de plaats van het origneel zetten
    $message = preg_replace('#\<img(.*?)\>#i', '[img]'.$preimg[0].'[/img]', $message);
    }

//Nu de links. Dit werkt overigens alleen voor [url=www.example.com]omschrijving[/url], maar het lijkt me dat dat ook al het benodigde is.
//Ook hier weer zoeken naar het totaal, daarna kunnen we pas inzoomen op het href-attribuut
preg_match_all('#\<a(.*?)\>#is',$message, $matches );
foreach ($matches as $totaallink){}
unset ($matches);
foreach ($totaallink as $totaal2link)
    {
    //Vervolgens zoeken we de src met double  quotes op,
    preg_match_all('#href=\"(.*?)\"#i',$totaal2link, $matches );
    foreach ($matches as $prelink){}
    unset($matches);
    //Geen link tag met double quotes? Dan zou het single quotes moeten hebben
    $aantal=count($prelink);
    if ($aantal == 0)
        {
        unset ($prelink);
        preg_match_all("#href=\'(.*?)\'#i",$totaal2link, $matches );
        foreach ($matches as $prelink){}
        unset ($matches);
            $aantal=count($prelink);
    if ($aantal == 0)
        {
        unset ($prelink);
        preg_match_all("#href=\'\'(.*?)\'\'#i",$totaal2link, $matches );
        foreach ($matches as $prelink){}
        unset ($matches);
            }//afsluiting ''
        }//afsluiting '
    //Met $prelink hebben we de link. Nu dat omzetten naar een goede BBcode en dat in de plaats van het origneel zetten
    $message = preg_replace('#\<a(.*?)\>#i', '[url='.$prelink[0].']', $message);
    $message = preg_replace('#\<\/a\>#i', '[/url]', $message);
      
    }
$message=addslashes($message);
echo $message;
?>
En dit is mijn output:

Code: Selecteer alles

Falderie faldera, dit is een berichtje op het forum van Sandra. En weet je wat? Hier hebben een plaatje met een linkje: [url=http://www.example.com/image_large.gif]testerdetest[/url] plaatje1[img]http://www.example.com/image_small.gif[/img] plaatje2[img]http://www.example.com/image_small.gif[/img] [url=http://www.example.com/image_large.gif]linkje2[/url] [url=http://www.example.com/image_large.gif]linkje3[/url] Dat was nou een mooi kralenplaatje.
Lijkt me toch precies de bedoeling, of niet? Wat jij beschrijft zou ook niet moeten kunnen, preg_match(_all) zoekt naar een structuur wat begint met het beginstuk (<img) tot het allereerste eindstuk (/>) wat het tegenkomt. preg_match_all zoekt dan weer door naar de volgende net zo lang totdat het de hele subject gehad heeft, en stopt de matches dan in een array.

Dat het bij jou anders gebeurt, is mij eerlijk gezegd een raadsel...

Ik zou dan haast denken dat het in het stuk databaseconnectie zit, hoewel me dat eigenlijk stug lijkt. Of

sandra
Berichten: 122
Lid geworden op: 25 mei 2003, 12:55
Contacteer:

Re: bepaalde html tags toestaan

Bericht door sandra » 04 aug 2008, 18:03

He raar...ik heb je code gekopieerd en het werkt inderdaad. Ik heb je tekst vervangen met tekst uit mijn forum, met meerdere plaatjes, maar daar gaat het toch fout.
Dit is de tekst:
Spoiler: bekijk

Code: Selecteer alles

Het is al lang geleden dat ik nog wat gepost heb maar ik ben nu meer bezig met een andere hobby dus veel is het niet  :) 

Oorbellen die ik eens heb gemaakt toen ik voor een taak voor school Griekse moest spelen (geen moderne maar van in de klassieke oudheid)
<a href="http://fotos.kralen.com/forum/5818_gr.jpg" target="_blank"><img src="http://fotos.kralen.com/forum/5818_kl.jpg" alt="" border="0"></a>

		
<a href="http://fotos.kralen.com/forum/5819_gr.jpg" target="_blank"><img src="http://fotos.kralen.com/forum/5819_kl.jpg" alt="" border="0"></a>


probeerseltje met wire		
<a href="http://fotos.kralen.com/forum/5820_gr.jpg" target="_blank"><img src="http://fotos.kralen.com/forum/5820_kl.jpg" alt="" border="0"></a>


sleutelhanger met een leisteen in de vorm van een knoop uit Wales		
<a href="http://fotos.kralen.com/forum/5821_gr.jpg" target="_blank"><img src="http://fotos.kralen.com/forum/5821_kl.jpg" alt="" border="0"></a>


Een reeks simpele armbandjes in alle kleuren (er moeten er nog bij komen). Heel leuk om te combineren!   :wink: 	
<a href="http://fotos.kralen.com/forum/5822_gr.jpg" target="_blank"><img src="http://fotos.kralen.com/forum/5822_kl.jpg" alt="" border="0"></a>
		

Ik hoop dat dit ook met het uploadformulier gedaan mocht worden want ik heb de spelregels even nagelezen maar ik vond het niet op het eerste zicht. Gewoon een bloemetje dus  :) 
<a href="http://fotos.kralen.com/forum/5823_gr.jpg" target="_blank"><img src="http://fotos.kralen.com/forum/5823_kl.jpg" alt="" border="0"></a>
		

Voilà dat waren ze weer 
		 :)
en dit dan de output:
Spoiler: bekijk

Code: Selecteer alles

Het is al lang geleden dat ik nog wat gepost heb maar ik ben nu meer bezig met een andere hobby dus veel is het niet :) Oorbellen die ik eens heb gemaakt toen ik voor een taak voor school Griekse moest spelen (geen moderne maar van in de klassieke oudheid) [url=http://fotos.kralen.com/forum/5818_gr.jpg][img]http://fotos.kralen.com/forum/5818_kl.jpg[/img][/url] [url=http://fotos.kralen.com/forum/5818_gr.jpg][img]http://fotos.kralen.com/forum/5818_kl.jpg[/img][/url] probeerseltje met wire [url=http://fotos.kralen.com/forum/5818_gr.jpg][img]http://fotos.kralen.com/forum/5818_kl.jpg[/img][/url] sleutelhanger met een leisteen in de vorm van een knoop uit Wales [url=http://fotos.kralen.com/forum/5818_gr.jpg][img]http://fotos.kralen.com/forum/5818_kl.jpg[/img][/url] Een reeks simpele armbandjes in alle kleuren (er moeten er nog bij komen). Heel leuk om te combineren! :wink: [url=http://fotos.kralen.com/forum/5818_gr.jpg][img]http://fotos.kralen.com/forum/5818_kl.jpg[/img][/url] Ik hoop dat dit ook met het uploadformulier gedaan mocht worden want ik heb de spelregels even nagelezen maar ik vond het niet op het eerste zicht. Gewoon een bloemetje dus :) [url=http://fotos.kralen.com/forum/5818_gr.jpg][img]http://fotos.kralen.com/forum/5818_kl.jpg[/img][/url] Voilà dat waren ze weer :)
Zou het zijn omdat de plaatjes met nummers zijn? Maar er is ook _kl en _gr....ik hoop dat we eruit komen! We waren al zo ver, leek zo goed te werken.

sandra
Berichten: 122
Lid geworden op: 25 mei 2003, 12:55
Contacteer:

Re: bepaalde html tags toestaan

Bericht door sandra » 04 aug 2008, 19:54

Ik heb zelf echt geen flauw idee waardoor dit komt hoor, heb net maar even wat teksten zitten wijzigen, bv cijfers vervangen met letters, mapje eruit halen, tekst als 1 lange string, dus geen enters er tussen, maar ik krijg steeds dan dezelfde fout.

Maar, ik kijk net naar jouw tekst, en ik zie nu dat de plaatje 1en plaatje 2 al hetzelfde waren. net zoals linkje2 en linkje 3.
heb het even gewijzigd naar dit:

Code: Selecteer alles

$message='Falderie faldera, dit is een berichtje op het forum van Sandra. En weet je wat? Hier hebben een plaatje met een linkje: <a href="http://www.example.com/image_large.gif" target="_blank">testerdetest</a>
plaatje1<img src="http://www.example.com/image_small.gif" title="Klik voor grote afbeelding" alt="Kralenplaatje" width="320" height="240" />
plaatje2<img src="http://www.example.com/image_large.gif" title="Klik voor grote afbeelding" alt="Kralenplaatje" width="320" height="240" />
<a href="http://www.example.com/image_small.gif" target="_blank">linkje2</a>
<a href="http://www.example.com/image_large.gif" target="_blank">linkje3</a>
en krijg dan dit eruit:

Code: Selecteer alles

Falderie faldera, dit is een berichtje op het forum van Sandra. En weet je wat? Hier hebben een plaatje met een linkje: [url=http://www.example.com/image_large.gif]testerdetest[/url] plaatje1[img]http://www.example.com/image_small.gif[/img] plaatje2[img]http://www.example.com/image_small.gif[/img] [url=http://www.example.com/image_large.gif]linkje2[/url] [url=http://www.example.com/image_large.gif]linkje3[/url] Dat was nou een mooi kralenplaatje.
plaatje is dan beiden keren image_small en url is dan beiden keren image_large....

AfbeeldingIk hoop dat er toch een oplossing zal zijn....

Gebruikersavatar
Ger
Berichten: 4864
Lid geworden op: 03 jan 2006, 22:23
Locatie: 192.68.1.100
Contacteer:

Re: bepaalde html tags toestaan

Bericht door Ger » 04 aug 2008, 21:41

D'r zit ergens een fout in de loop, maar waar, dat kan ik zo gauw niet vinden nu (net thuis, morgen weer om 6 uur de wekker).

Je zal even geduld moeten hebben ben ik bang, of iemand anders moet hier naar willen kijken...

sandra
Berichten: 122
Lid geworden op: 25 mei 2003, 12:55
Contacteer:

Re: bepaalde html tags toestaan

Bericht door sandra » 05 aug 2008, 09:01

Ik heb geduld, ik wacht liever dan dat ik alles met de hand moet wijzigen. ;) Ben allang blij dat je helpt. :)

Wel heb ik even zelf gepuzzeld, om te snappen hoe het werkt en uit te vogelen waar het fout gaat.
Ik vraag me toch af of het niet hierdoor komt:
$message = preg_replace('#\<img(.*?)\>#i', '[img]'.$preimg[0].'[/img]', $message);

Uit de tekst $message pakt hij alles wat met <img begint en met > eindigt, dat vervangt ie met [img]$preimg[0][/img]. Dus het maakt niet uit welke tekst tussen <img, hij vervangt ze allemaal. Kan $preimg[0] niet op de een of andere manier tussen '#\<img(.*?)\>#i' gezet worden? Dus het begint met <img, $preimg[0] moet erin voorkomen en het moet eindigen met > .

Ik heb de code waar het mee begon ingekort en hier en daar output gezet om te testen.

Code: Selecteer alles

<?php
$message='inleiding
<img src="http://www.example.com/image_small.gif" title="Klik voor grote afbeelding" alt="Kralenplaatje" width="320" height="240" />
<img src="http://www.example.com/image_test.gif" title="Klik voor grote afbeelding" alt="Kralenplaatje" width="320" height="240" />
afsluiting';

preg_match_all('#\<img(.*?)\>#i',$message, $matches );
foreach ($matches as $totaalimg) {}
unset($matches);
echo ("dit is de complete array: <br>");
print_r($totaalimg);
echo ("<hr>daarna gaat ie plaatje voor plaatje af:<br>");
foreach ($totaalimg as $totaal2img)
    {
		echo "<hr>";
		print_r($totaal2img);
		echo "<br><br>";
    //Vervolgens zoeken we de src met double  quotes op,
    preg_match_all('#src=\"(.*?)\"#i',$totaal2img, $matches );
    foreach ($matches as $preimg){}
		echo ("dat levert een array op met alleene het url:<br>");
		print_r($preimg);
    unset($matches);
    //Met $preimg hebben we de bron van het plaatje. Nu dat omzetten naar een goede BBcode en dat in de plaats van het origneel zetten
		$message = preg_replace('#\<img(.*?)\>#i', '[img]'.$preimg[0].'[/img]', $message);    
    }
echo ("<hR><hr><hr>dit komt er dan uit:  $message");
?>
Dit komt er dan uit:

Code: Selecteer alles

dit is de complete array: <br>Array
(
    [0] =>  src="http://www.example.com/image_small.gif" title="Klik voor grote afbeelding" alt="Kralenplaatje" width="320" height="240" /
    [1] =>  src="http://www.example.com/image_test.gif" title="Klik voor grote afbeelding" alt="Kralenplaatje" width="320" height="240" /
)
<hr>daarna gaat ie plaatje voor plaatje af:<br><hr> src="http://www.example.com/image_small.gif" title="Klik voor grote afbeelding" alt="Kralenplaatje" width="320" height="240" /<br><br>dat levert een array op met alleene het url:<br>Array
(
    [0] => http://www.example.com/image_small.gif
)
<hr> src="http://www.example.com/image_test.gif" title="Klik voor grote afbeelding" alt="Kralenplaatje" width="320" height="240" /<br><br>dat levert een array op met alleene het url:<br>Array
(
    [0] => http://www.example.com/image_test.gif
)
<hR><hr><hr>dit komt er dan uit:  inleiding
[img]http://www.example.com/image_small.gif[/img]
[img]http://www.example.com/image_small.gif[/img]
afsluiting
hij filtert dus alles er goed uit, maar hij vervangt alles wat met <img begint met het 1ste plaatje. Als de loop bij het 2de plaatje komt, is er geen <img meer, dus is er ook niets meer te vervangen.

Gebruikersavatar
Ger
Berichten: 4864
Lid geworden op: 03 jan 2006, 22:23
Locatie: 192.68.1.100
Contacteer:

Re: bepaalde html tags toestaan

Bericht door Ger » 05 aug 2008, 09:15

Volgens mij heb je gelijk, zat ik net ook ff naar te kijken. :)

Kun je dit eens proberen?

Code: Selecteer alles

<?php
$message='<br><br><br>
<a href="http://www.example.com/linkje1.html" target="_blank">linkje1</a><br>
plaatje1 <img src="http://www.example.com/afbeelding1.gif" title="Klik voor grote afbeelding" alt="Kralenplaatje" width="320" height="240" /><br>
plaatje2 <img src="http://www.example.com/afbeelding2.gif" title="Klik voor grote afbeelding" alt="Kralenplaatje" width="320" height="240" /><br>
<a href="http://www.example.com/linkje2.html" target="_blank">linkje2</a><br>
<a href="http://www.example.com/linkje3.html" target="_blank">linkje3</a><br>Dat was nou een mooi kralenplaatje.';

//We beginnen met de afbeeldingen, want in een afbeelding zal nooit iets genest zijn.
//Met onderstaande wordt gezocht naar  een img tag. Omdat de volgorde van attributen binnen tags niet altijd vaststaat, is deze tussenstap nodig.
preg_match_all('#\<img(.*?)\>#i',$message, $matchees );
foreach ($matchees as $totaalimg) {}
foreach ($matchees[0] as $totaal2img)
    {
    //Vervolgens zoeken we de src met double  quotes op,
    preg_match_all('#src=\"(.*?)\"#i',$totaal2img, $matches );
    foreach ($matches as $key=>$preimg){}
$replacement = $preimg[0];
//Geen img tag met double quotes? Dan zou het single quotes moeten hebben
    $aantal=count($preimg);
    if ($aantal == 0) 
        {
        unset ($preimg);
        preg_match_all("#src=\'(.*?)\'#i",$totaal2img, $matches );
        foreach ($matches as $preimg){}
        $replacement = $preimg[0];
        $aantal=count($preimg);
        if ($aantal == 0) 
            {
            unset ($preimg);
            preg_match_all("#src=\'\'(.*?)\'\'#i",$totaal2img, $matches );
            foreach ($matches as $preimg){}
            $replacement = $preimg[0];
            }//afsluiting '' (dubben enkel)
        }//afsluiting '
        
    //Met $preimg hebben we de bron van het plaatje. Nu dat omzetten naar een goede BBcode en dat in de plaats van het origneel zetten
    $message = str_replace($totaal2img, '[img]'.$replacement.'[/img]', $message);
    }

//Nu de links. Dit werkt overigens alleen voor [url=www.example.com]omschrijving[/url], maar het lijkt me dat dat ook al het benodigde is.
//Ook hier weer zoeken naar het totaal, daarna kunnen we pas inzoomen op het href-attribuut
preg_match_all('#\<a(.*?)\>#is',$message, $matchees );
foreach ($matchees as $totaallink){}
foreach ($matchees[0] as $totaal2link)
    {
    //Vervolgens zoeken we de src met double  quotes op,
    preg_match_all('#href=\"(.*?)\"#i',$totaal2link, $matches );
    foreach ($matches as $prelink){}
    unset($matches);
    //Geen link tag met double quotes? Dan zou het single quotes moeten hebben
    $aantal=count($prelink);
    if ($aantal == 0)
        {
        unset ($prelink);
        preg_match_all("#href=\'(.*?)\'#i",$totaal2link, $matches );
        foreach ($matches as $prelink){}
        unset ($matches);
            $aantal=count($prelink);
    if ($aantal == 0)
        {
        unset ($prelink);
        preg_match_all("#href=\'\'(.*?)\'\'#i",$totaal2link, $matches );
        foreach ($matches as $prelink){}
        unset ($matches);
            }//afsluiting ''
        }//afsluiting '
    //Met $prelink hebben we de link. Nu dat omzetten naar een goede BBcode en dat in de plaats van het origneel zetten
    $message = str_replace($totaal2link, '[url='.$prelink[0].']', $message);
    $message = preg_replace('#\<\/a\>#i', '[/url]', $message);
      
    }
$message=addslashes($message);
echo $message;

?>
(hele lelijke code en veel comments kloppen van geen kant meer, maar ik heb weinig tijd op het moment)

sandra
Berichten: 122
Lid geworden op: 25 mei 2003, 12:55
Contacteer:

Re: bepaalde html tags toestaan

Bericht door sandra » 05 aug 2008, 09:36

Code: Selecteer alles

[url=http://www.example.com/linkje1.html]linkje1[/url]
plaatje1 [img]http://www.example.com/afbeelding1.gif[/img]
plaatje2 [img]http://www.example.com/afbeelding2.gif[/img]
[url=http://www.example.com/linkje2.html]linkje2[/url]
[url=http://www.example.com/linkje3.html]linkje3[/url]
Dat was nou een mooi kralenplaatje.
:D dat is zeker een mooi kralenplaatje! ;) lijkt te werken dus!!
heb de test-tekst even gewijzigd met de voorbeeld van het forum, voor het geval het fout gaat als img in a href zit, en ook dat gaat goed. :D

Code: Selecteer alles

Het is al lang geleden dat ik nog wat gepost heb maar ik ben nu meer bezig met een andere hobby dus veel is het niet :) Oorbellen die ik eens heb gemaakt toen ik voor een taak voor school Griekse moest spelen (geen moderne maar van in de klassieke oudheid) [url=http://fotos.kralen.com/forum/5818_gr.jpg][img]http://fotos.kralen.com/forum/5818_kl.jpg[/img][/url] [url=http://fotos.kralen.com/forum/5819_gr.jpg][img]http://fotos.kralen.com/forum/5819_kl.jpg[/img][/url] probeerseltje met wire [url=http://fotos.kralen.com/forum/5820_gr.jpg][img]http://fotos.kralen.com/forum/5820_kl.jpg[/img][/url] sleutelhanger met een leisteen in de vorm van een knoop uit Wales [url=http://fotos.kralen.com/forum/5821_gr.jpg][img]http://fotos.kralen.com/forum/5821_kl.jpg[/img][/url] Een reeks simpele armbandjes in alle kleuren (er moeten er nog bij komen). Heel leuk om te combineren! :wink: [url=http://fotos.kralen.com/forum/5822_gr.jpg][img]http://fotos.kralen.com/forum/5822_kl.jpg[/img][/url] Ik hoop dat dit ook met het uploadformulier gedaan mocht worden want ik heb de spelregels even nagelezen maar ik vond het niet op het eerste zicht. Gewoon een bloemetje dus :) [url=http://fotos.kralen.com/forum/5823_gr.jpg][img]http://fotos.kralen.com/forum/5823_kl.jpg[/img][/url] Voilà dat waren ze weer :) Dat was nou een mooi kralenplaatje.
bedankt voor je hulp!! :D ga zo even code goed doorlezen, ben nieuwsgierig wat nu de oplossing is.

Gebruikersavatar
Ger
Berichten: 4864
Lid geworden op: 03 jan 2006, 22:23
Locatie: 192.68.1.100
Contacteer:

Re: bepaalde html tags toestaan

Bericht door Ger » 05 aug 2008, 09:43

Graag gedaan. :)
Ik vind het zelf altijd leuk om dit soort dingetjes uti te vogelen, en als ik me er eenmaal in vastgebeten heb, laat ik het niet zomaar los. :)
(geloof het of niet: heb er vannacht nog over gedroomd... :shock: )

Ik hoop dat je een beetje wijskomt uit de code. Ik heb geen fatsoenlijke editor bij de hand, dus geen goede uitlijning meer en volgens mij staat er hier en daar ook wat overbodige code nu. Beetje onoverzichtelijk dus.

Kern van de wijziging is in elk geval dat ik de input terug laat komen als variabele op het eind bij de vervanging, waardoor dus alleen die specifieke wordt vervangen.

sandra
Berichten: 122
Lid geworden op: 25 mei 2003, 12:55
Contacteer:

Re: bepaalde html tags toestaan

Bericht door sandra » 05 aug 2008, 09:57

haha ik snap wat je bedoelt ja....
week geleden begon ik met lay-out template van het forum aanpassen, zat de 1ste avond te prutsen, kon het echt niet uitstaan dat het niet lukte! dacht toen eraan te kijken of iemand hier tegen betaling de lay-out kan inbouwen in het forum, maar kon het toch niet laten verder te gaan puzzelen. En gelukkig is dat uiteindelijk wel gelukt! :) Maar GRRR dan heb je weer gedoe met het overzetten, viel vies tegen, dacht je klaar te zijn moet je gaan puzzelen met img en a href. En dan zit je te prutsen en dan lukt het niet en dan denk je maar even te stoppen maar dan blijft het toch in je hoofd hangen, van 'wat als ik het nou zo probeer'. Gisteravond alleen hond uitgebreid uitgelaten en hier nog mee gepuzzeld. Dus waar droomde ik over....vaag over een website met foto's van de hond en gepruts met a href en img. :lol: :roll:

Ik ga de code zo netjes maken, zorgen dat ook pb's en onderschriften gewijzigd kan worden. Ik zal het dan hier posten, mocht iemand ooit hetzelfde probleem hebben en dit vinden met de zoekfunctie.

iig bedankt voor je hulp!

Gebruikersavatar
Ger
Berichten: 4864
Lid geworden op: 03 jan 2006, 22:23
Locatie: 192.68.1.100
Contacteer:

Re: bepaalde html tags toestaan

Bericht door Ger » 05 aug 2008, 10:01

sandra schreef: Dus waar droomde ik over....vaag over een website met foto's van de hond en gepruts met a href en img. :lol: :roll:
LOL :lol:
sandra schreef:Ik ga de code zo netjes maken, zorgen dat ook pb's en onderschriften gewijzigd kan worden. Ik zal het dan hier posten, mocht iemand ooit hetzelfde probleem hebben en dit vinden met de zoekfunctie.
Toppie, succes verder!
Spoiler: bekijk
Overigens vind ik dit heerlijke topics: ik weet wat, jij weet wat, samen vinden we een oplossing. :)

sandra
Berichten: 122
Lid geworden op: 25 mei 2003, 12:55
Contacteer:

Re: bepaalde html tags toestaan

Bericht door sandra » 05 aug 2008, 14:24

:lol: ik moest even denken, zoveel heb ik zelf niet toegevoegd aan de code, maar oh ja, wel dat de tekst uit database gehaald wordt en ge-update wordt. maar dat is nog wel makkelijk....maar had wel meegekeken wat het foutje was inderdaad. ;) Heel frustrerend als je er niet meteen uitkomt maar op zich wel leuke puzzel, tenminste ook nuttiger dan sudoku.

Ik heb het weer geprobeerd en het gaat nu waarschijnlijk goed. Er bleven stuk of 20 rijen over, vorige keer ook, snapte toen niet waarom maar nu wel. Soms gebeurd dit:
<a href="url
">
en dat pakt ie dan niet goed.
Heb die dus handmatig onder phpmyadmin gecorrigeerd en dan gaat het wel goed. :)
En heb dit toegevoegd aan de code:
if($replacement!="") {
dus bovenaan
$message = str_replace($totaal2img, '[img]'.$replacement.'[/img]', $message);
Hij vergangt <img of <a href dus alleen als ie ook wat uit <img of <a href wat uit kon filteren. Want er waren soms mensen die bv <A href=""url> deden. :roll: Of zelfs <a href="">, gewoon leeg. Die verwijder ik dan liever handmatig omdat ik die tegenkom als ik controle-query uitvoer, dan dat er [url=] in komt. Kan ik meteen dat soort slordigheidjes wegwerken....waren trouwens bijna 4000 rijen die met deze script werden gewijzigd, ben blij dat dat niet handmatig hoefde. ;)

Overigens, ook denk ik eraan <img met een eigengemaakte bbcode te vervangen. Het kan zijn dat veel plaatjes heel groot zijn, daarom had ik ook standaard html code <a href="url"><img src="url" height="200"></a>. Dus ipv met [img] vervang ik het met [Img_max]. En voeg ik dit toe aan het systeem:
<img src="{URL}" maxwidth="400" alt="Afbeelding" style="border: 1px dotted #a5aec5" />

Dat heb ik juist weer geleerd van Fridge, dat dat kan. ;) Alleen dan moet ik zeker eerst forum installeren, dan deze bbcode toevoegen en dan pas het oude forum converteren. Nou ja, nu wat ander werk afhandelen, morgen ofzo maar weer even testen, of het overstappen zo goed zal gaan.

Gebruikersavatar
marian0810
Berichten: 1974
Lid geworden op: 09 apr 2007, 10:24
Locatie: Hoofddorp
Contacteer:

Re: bepaalde html tags toestaan

Bericht door marian0810 » 11 aug 2008, 12:38

Misschien een beetje mosterd na de maaltijd :oops: maar ik kwam deze toevallig tegen, misschien heb je er wat aan...

http://www.lithiumstudios.org/forum/vie ... f=31&t=535

Jim
Berichten: 3900
Lid geworden op: 21 feb 2007, 14:53
Locatie: Groningen
Contacteer:

Re: bepaalde html tags toestaan

Bericht door Jim » 11 aug 2008, 12:44

Die MOD ken ik en ik raad sterk af deze te gebruiken aangezien het grote veiligheidsrisico's met zich meebrengt en je er een erg onveilig forum mee creeert.

HTML is om een reden uit phpBB3 gehaald, stop het er dan ook niet meer in. ;)
Jim Mossing Holsteyn - Beheerder
Documentatie | Algemene voorwaarden | Wiki

Heb je suggesties over het verbeteren van phpBB.nl of andere site-gerelateerde vragen? Stuur me een PB!

Gebruikersavatar
marian0810
Berichten: 1974
Lid geworden op: 09 apr 2007, 10:24
Locatie: Hoofddorp
Contacteer:

Re: bepaalde html tags toestaan

Bericht door marian0810 » 11 aug 2008, 12:50

Mmmmm... persoonlijk geloof ik erg in zelfbeschikking :mrgreen: Het staat er duidelijk genoeg bij, als mensen het dan toch willen is het hun eigen keus natuurlijk.
Het risico is toch niet groter dan het in phpBB2 altijd al was?

Jim
Berichten: 3900
Lid geworden op: 21 feb 2007, 14:53
Locatie: Groningen
Contacteer:

Re: bepaalde html tags toestaan

Bericht door Jim » 11 aug 2008, 12:54

Jawel, in phpBB2 was het veilig. Anders was het er daar ook wel uitgehaald. ;)

In phpBB3 is het weggehaald omdat je forum anders hack-gevoelig zou zijn als je HTML nu terugplaatst dan zet je een enorm risico terug.
Jim Mossing Holsteyn - Beheerder
Documentatie | Algemene voorwaarden | Wiki

Heb je suggesties over het verbeteren van phpBB.nl of andere site-gerelateerde vragen? Stuur me een PB!

Gesloten