regex: html tag + inhoud verwijderen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Arian Stolwijk

Arian Stolwijk

24/09/2007 22:16:00
Quote Anchor link
Beste allemaal,

Ik zit al een tijdje met de vraag waar ik geen goed antwoord op kan vinden...

Ik wil namelijk een html tag (uit bijvoorbeeld een html pagina) helemaal kunnen wissen.

Bijvoorbeeld alle <script> tags...

ik had al iets dergelijks als dit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$html
= eregi_replace("<script([^>]+)>([^</script>]+)</script>","<script>...</script>",$html);
?>


Maar dit werkt nog niet echt...

wie kan mij hier mee verder helpen ??

Groeten,
Arian
 
PHP hulp

PHP hulp

26/04/2024 09:01:41
 
Jan Koehoorn

Jan Koehoorn

24/09/2007 22:24:00
Quote Anchor link
Gewoon strip_tags gebruiken. Toegestane tags kun je als extra argument meegeven.
 
Arian Stolwijk

Arian Stolwijk

24/09/2007 23:07:00
Quote Anchor link
Jaa...

maar als ik bijvoorbeeld dit heb:

<script>
Blabla
</script>

en ik doe strip_tags, dan maakt hij er

Blabla van, en die bla bla moet óók weg!

Dus de inhoud van de hele tag moet dus mee worden verwijderd, en dat doet strip_tags niet...
 
Arend a

Arend a

24/09/2007 23:16:00
Quote Anchor link
gokje uit het hoofd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$inhoud
= preg_replace("|<script\w?(.*?)>(.*?)<\/script>|gi","", $inhoud");
?>

Niet getest.
 
Arian Stolwijk

Arian Stolwijk

24/09/2007 23:23:00
Quote Anchor link
Euhm, met jou code geeft hij een error van een 'undefined modifier 'g''

Als ik dan de g weg haal, doet laat hij gewoon alles staan...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$html
= preg_replace("|<script\w?(.*?)>(.*?)<\/script>|i","", $html);
?>


zo dus..
 
Jan Koehoorn

Jan Koehoorn

24/09/2007 23:28:00
Quote Anchor link
Probeer eens zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    $txt
= preg_replace ('/\<.*\>/', '', $txt);
?>
 
Martijn Wieringa

Martijn Wieringa

25/09/2007 09:57:00
Quote Anchor link
Als ik het goed begrijp wil je dus alleen de inhoud overhouden die in geen enkele HTML tag staat?

Ik denk niet dat dat zo simpel gaat.. ga je uit van bijv. 100% valide HTML, of is het input van een gebruiker die de inhoud doelbewust kan manipuleren?

Als je zoekt naar bijv. <div>(.*?)</div> om te strippen, maar iemand vult dit in:

<div>tekst<div>tekst</div>tekst</div>

Bij het zoeken wordt: '<div>tekst<div>tekst</div>' gevonden, het laatste deel: 'tekst</div>' vind geen match.

Als het om input gaat, zou ik zeker voor htmlentities() gaan i.p.v. proberen de fout te herstellen. Je kunt ook bij het invoeren controleren of de opgegeven data tenminste 1 html tag bevat. Zo ja, sta dan de gebruiker niet toe het formulier 'op te slaan'.
 
Arian Stolwijk

Arian Stolwijk

25/09/2007 17:24:00
Quote Anchor link
Het is bedoeld voor <script> tags, ik denk niet dat je zo snel tegenkomt dat er een <script> tag in een <script> tag zit...

het is uiteindelijk voor dat ik teksten uit een bepaalde html pagina wil, en dan zonder html, dus alleen teksten. Als je strip_tags doet, laat hij de inhoud van <script> tags ook nog staan, en dat lijkt niet zo mooi als dat later uitgelezen wordt als tekst, en er staat op eens javascript tussen.
Dus dacht ik, het is vast niet zo moeilijk om de inhoud tussen alle <script> en </script> tags te verwijderen..
dan ben ik daar alvast van af, en dan strip_tags erover, zodat ik echt dus alleen maar tekst overhoudt....

Volgens mij haalt Jan zijn scriptje gewoon alles wat tussen < en > staat weg, dus lijkt mij nog niet de juiste oplossing ;)
 
Arian Stolwijk

Arian Stolwijk

09/10/2007 20:47:00
Quote Anchor link
Na een zoektocht heb ik dit gevonden in een class op phpclasses.org.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php
$html
= mb_eregi_replace("(<script[^>]*?>
.*?</script>)"," ",$html);
?>

http://www.phpclasses.org/browse/package/4048.html
(in de functie Clean)

Groeten,
Arian
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.