style weghalen uit html
nu wil ik in dat inputveld bijv een html pagina die ik nu heb alle _style's_ eruit halen.
hoe kan ik dit het beste doen ik dacht aan een regex maar dan?
preg_replace?
en dan welke regex?
dus ik paste zeg maar de bron code in het formulier en dan druk ik op sumbit en dan is het de bedoeling dat alle style attributen er gewoon kompleet eruit gaan.
groet bart
btw nu heb ik dit :
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
<?php
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">
<textarea cols="250" rows="500" name="tekst"></textarea>
<input type="submit" value="vervang">
</form>';
$tekst = $_POST['tekst'];
$regex = '/style=".*"/';
preg_replace($regex, "", $tekst);
echo $tekst;
?>
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">
<textarea cols="250" rows="500" name="tekst"></textarea>
<input type="submit" value="vervang">
</form>';
$tekst = $_POST['tekst'];
$regex = '/style=".*"/';
preg_replace($regex, "", $tekst);
echo $tekst;
?>
als ik het goed begrijp doet preg_replace(vervangdit, metdit, vandezetekst)
of zie ik dat verkeerd?
Gewijzigd op 01/01/1970 01:00:00 door Bart niethenk
Als dit alles is; gebruik dan str_replace, sneller, duidelijker.
Jan H. Kila schreef op 19.10.2009 16:34:
Als dit alles is; gebruik dan str_replace, sneller, duidelijker.
ok en dan heb ik nu :
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
<?php
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">
<textarea cols="10" rows="10" name="tekst"></textarea>
<input type="submit" value="vervang">
</form>';
$tekst = $_POST['tekst'];
$regex = '/style=".*"/';
str_replace($regex, "", $tekst);
echo $tekst;
?>
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">
<textarea cols="10" rows="10" name="tekst"></textarea>
<input type="submit" value="vervang">
</form>';
$tekst = $_POST['tekst'];
$regex = '/style=".*"/';
str_replace($regex, "", $tekst);
echo $tekst;
?>
maar ik krijg nog steeds niet de goeie output.
nu wil ik dus als ik bijv. dit heb " <span style="color: #0000BB"> "
dat de style gewoon helemaal verwijderd word zodat ik alleen " <span>" overhoud
Gewijzigd op 01/01/1970 01:00:00 door bart niethenk
http://www.gskinner.com/RegExr/
Dan kan je zien wat er gematcht wordt.
Volgens mij is het in dit geval wel goed om regex'en te gebruiken, aangezien je niet precies weet welke style er is.
Klooi eens met Dan kan je zien wat er gematcht wordt.
Volgens mij is het in dit geval wel goed om regex'en te gebruiken, aangezien je niet precies weet welke style er is.
Karl schreef op 19.10.2009 16:39:
Klooi eens met http://www.gskinner.com/RegExr/
Dan kan je zien wat er gematcht wordt.
Volgens mij is het in dit geval wel goed om regex'en te gebruiken, aangezien je niet precies weet welke style er is.
Dan kan je zien wat er gematcht wordt.
Volgens mij is het in dit geval wel goed om regex'en te gebruiken, aangezien je niet precies weet welke style er is.
ik neem wat highlighted is in het twee boxje is wat gereplaced gaat worden want staat heel mooi in blauw en dat moet weg maar bij mij werkt het toch niet ...
In het input vakje, die ene regel kan je je regex maken. In dat onderste grote vak stop je de tekst waar je de regex voor wilt maken.
Wil je de regex gebruiken, dan kopieer je hem bij RegExp: weg.
Karl schreef op 19.10.2009 16:52:
Zie bovenaan, daar staat replace.
In het input vakje, die ene regel kan je je regex maken. In dat onderste grote vak stop je de tekst waar je de regex voor wilt maken.
Wil je de regex gebruiken, dan kopieer je hem bij RegExp: weg.
In het input vakje, die ene regel kan je je regex maken. In dat onderste grote vak stop je de tekst waar je de regex voor wilt maken.
Wil je de regex gebruiken, dan kopieer je hem bij RegExp: weg.
zoals dit? :
http://img207.imageshack.us/i/aaady.jpg/
bart schreef op 19.10.2009 16:58:
zoals dit? :
http://img207.imageshack.us/i/aaady.jpg/
Karl schreef op 19.10.2009 16:52:
Zie bovenaan, daar staat replace.
In het input vakje, die ene regel kan je je regex maken. In dat onderste grote vak stop je de tekst waar je de regex voor wilt maken.
Wil je de regex gebruiken, dan kopieer je hem bij RegExp: weg.
In het input vakje, die ene regel kan je je regex maken. In dat onderste grote vak stop je de tekst waar je de regex voor wilt maken.
Wil je de regex gebruiken, dan kopieer je hem bij RegExp: weg.
zoals dit? :
http://img207.imageshack.us/i/aaady.jpg/
Ja.
Karl schreef op 19.10.2009 17:03:
Ja.
bart schreef op 19.10.2009 16:58:
zoals dit? :
http://img207.imageshack.us/i/aaady.jpg/
Karl schreef op 19.10.2009 16:52:
Zie bovenaan, daar staat replace.
In het input vakje, die ene regel kan je je regex maken. In dat onderste grote vak stop je de tekst waar je de regex voor wilt maken.
Wil je de regex gebruiken, dan kopieer je hem bij RegExp: weg.
In het input vakje, die ene regel kan je je regex maken. In dat onderste grote vak stop je de tekst waar je de regex voor wilt maken.
Wil je de regex gebruiken, dan kopieer je hem bij RegExp: weg.
zoals dit? :
http://img207.imageshack.us/i/aaady.jpg/
Ja.
en wat lichtblauw is word vervangen?
if so dan werkt het nog steeds niet -.-
Gewijzigd op 01/01/1970 01:00:00 door bart niethenk
Karl schreef op 19.10.2009 17:10:
bedankt karl het werkt nu :D
moet ik meerdere regexes maken of kan het met 1?
want ik heb net meerdere regexes geprobeerd maar dat lukte niet.(zelfde var naam andere regex).
en toen voerde het script niets uit heel raar.
thnkx
probleem is helaas nog steeds niet opgelost
eigenlijk wil ik wel alle opmaak attributen eruit halen.
wat is een goeie manier om dit te doen?
weer een regex?
Gewijzigd op 01/01/1970 01:00:00 door bart niethenk
strip_tags();
En wat er eigenlijk nog fout zou zijn aan je bovengebruikte regex, is dat als je dit zou hebben:
<span style="color: green;">
Om een div een grootte van 15 pixels te maken, moet je dit zetten tussen style="". Dit wordt dan: style="width: 15px;".
</span>
Hier moet 1x iets verwijderd worden, maar het gebeurd 3 keer. Terwijl je alleen bij de html-elements moet zoeken. Ook word volgens mij dit niet ge-replaced: style=width:15px;
Nu weet ik niet of dit ook kan bij style, maar bij src etc. zie ik heel vaak dat mensen het zo doen.
Het enige dat je weet tussen attributen en bijvoorbeeld <div> is dat er een spatie tussen <div en class="class" zit, dus: <div class="class"id="id" style="style">
Dus je moet zoeken:
preg_replace("#<([a-z0-9]+) (.*)>#i", "<$1>", $html);
Maar dit is ook niet helemaal correct, want <br /> zou nu <br> worden. Dat willen we niet hebben natuurlijk. Dan gaat je xHTML eraan. Dus je moet eigenlijk kijken wat er in $2 zit. Of dit eindigd op een ' /' of niet.
Ikzelf zou dit zo doen:
Dit is niet getest
Fout geconstateerd: De while gaat oneindig door als er een <br /> is gevonden, deze vervangt hij door een <br /> Haha.
Mogelijke oplossing: De $2 verplichten om langer te zijn dan 2 tekens, want een attribuut moet dat zoizo zijn: a=b -> 3 tekens. Dan wordt de pattern dus:
"#<([a-z0-9]+) (.*){3,}>#i"
Nu weet ik ook even niet uit mijn hoofd of < en > gestript moeten worden, maar volgens mij wel. De pattern wordt dan:
"#\<([a-z0-9]+) (.*){3,}\>#i"
Met dat <br /> en <p> probleem heb ik deze oplossing voor je: En wat er eigenlijk nog fout zou zijn aan je bovengebruikte regex, is dat als je dit zou hebben:
<span style="color: green;">
Om een div een grootte van 15 pixels te maken, moet je dit zetten tussen style="". Dit wordt dan: style="width: 15px;".
</span>
Hier moet 1x iets verwijderd worden, maar het gebeurd 3 keer. Terwijl je alleen bij de html-elements moet zoeken. Ook word volgens mij dit niet ge-replaced: style=width:15px;
Nu weet ik niet of dit ook kan bij style, maar bij src etc. zie ik heel vaak dat mensen het zo doen.
Het enige dat je weet tussen attributen en bijvoorbeeld <div> is dat er een spatie tussen <div en class="class" zit, dus: <div class="class"id="id" style="style">
Dus je moet zoeken:
preg_replace("#<([a-z0-9]+) (.*)>#i", "<$1>", $html);
Maar dit is ook niet helemaal correct, want <br /> zou nu <br> worden. Dat willen we niet hebben natuurlijk. Dan gaat je xHTML eraan. Dus je moet eigenlijk kijken wat er in $2 zit. Of dit eindigd op een ' /' of niet.
Ikzelf zou dit zo doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$pattern = "#<([a-z0-9]+) (.*)>#i";
$html = 'htmltext';
while (preg_match($pattern, $html, $match)) { // Hier worden de matches in $match opgeslagen.
if (preg_match("# /$#", $match[2])) { // Dit moet eigenlijk niet met preg_functie, maar met een str-functie. De preg_functie is niet nodig en is trager. Maar had ik even geen zin in.
$match[1] .= ' /';
}
$html = preg_replace($pattern, '<' . $match[1] . '>', $html);
}
?>
$pattern = "#<([a-z0-9]+) (.*)>#i";
$html = 'htmltext';
while (preg_match($pattern, $html, $match)) { // Hier worden de matches in $match opgeslagen.
if (preg_match("# /$#", $match[2])) { // Dit moet eigenlijk niet met preg_functie, maar met een str-functie. De preg_functie is niet nodig en is trager. Maar had ik even geen zin in.
$match[1] .= ' /';
}
$html = preg_replace($pattern, '<' . $match[1] . '>', $html);
}
?>
Dit is niet getest
Fout geconstateerd: De while gaat oneindig door als er een <br /> is gevonden, deze vervangt hij door een <br /> Haha.
Mogelijke oplossing: De $2 verplichten om langer te zijn dan 2 tekens, want een attribuut moet dat zoizo zijn: a=b -> 3 tekens. Dan wordt de pattern dus:
"#<([a-z0-9]+) (.*){3,}>#i"
Nu weet ik ook even niet uit mijn hoofd of < en > gestript moeten worden, maar volgens mij wel. De pattern wordt dan:
"#\<([a-z0-9]+) (.*){3,}\>#i"
Gewijzigd op 01/01/1970 01:00:00 door Mark L
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="z-index: 1;">
gaat er gewoon door een, nog wel meer dingen gaan er doorheen.
http://www.gskinner.com/RegExr/, gaat
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="z-index: 1;"> er niet door..
Ik gebruikte mijn laatste: "#\<([a-z0-9]+) (.*){3,}\>#i". Dit wordt dus "\<([a-z0-9]+) (.*){3,}\>" met ignoreCase aan.
@ Karl, als ik 't test bij <table width="100%" border="0" cellspacing="0" cellpadding="0" style="z-index: 1;"> er niet door..
Ik gebruikte mijn laatste: "#\<([a-z0-9]+) (.*){3,}\>#i". Dit wordt dus "\<([a-z0-9]+) (.*){3,}\>" met ignoreCase aan.
Miloan schreef op 21.10.2009 12:17:
@ Karl, als ik 't test bij http://www.gskinner.com/RegExr/, gaat
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="z-index: 1;"> er niet door..
Ik gebruikte mijn laatste: "#\<([a-z0-9]+) (.*){3,}\>#i". Dit wordt dus "\<([a-z0-9]+) (.*){3,}\>" met ignoreCase aan.
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="z-index: 1;"> er niet door..
Ik gebruikte mijn laatste: "#\<([a-z0-9]+) (.*){3,}\>#i". Dit wordt dus "\<([a-z0-9]+) (.*){3,}\>" met ignoreCase aan.
Ik had ven moeten aangeven dat ik gewoon een stuk html d'r in gestopt had.
Test het maar eens met:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<html>
<head>
<title>PHPhulp - PHP Forum - style weghalen uit html</title>
<meta name="keywords" content="php, php algemeen, php hulp, phphulp, php support, php scripts, php tutorials, php links, php boeken, help, hulp, programmeren, programmering, mysql, databases, sql, webdesign, webmasters, boeken, ict, php help, php functies, php artikelen, scripts, functies, tutorials, artikelen, programming, programmers, xml, array, arrays, forum, forums, login, how to, language, articles, library">
<meta name="description" content="Alles over PHP. PHP scripts, PHP tutorials, PHP links, PHP boeken, een PHP forum en nog veel meer..">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript" language="JavaScript1.2" src="/cfgs/stm31.js"></script>
<link rel="stylesheet" href="/cfgs/phphulp.css" type="text/css" media="all">
<link rel="stylesheet" href="/cfgs/forum.css" type="text/css" media="all">
</head>
<body>
<!-- main table (including background -->
<table width="770" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="left" valign="top">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="33%" height="153" align="left" valign="top">
<!-- header (logo -->
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left" valign="top"><a href="http://www.phphulp.nl" title="PHPhulp"><img src="/imgs/header/logo.gif" width="258" height="108" alt="PHPhulp" border="0"></a></td>
</tr>
<tr>
<td valign="middle" background="/imgs/header/bluebackground.gif" class="loggedin" height="27" align="left" valign="top">
<b>Ingelogd als:</b> <a href="/profiel/user/14017/" title="Bekijk je profiel">Karl</a> </td>
</tr>
<tr>
<td height="18"> </td>
</tr>
</table>
</td>
<td width="67%" align="left" valign="top"> <!-- menu -->
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="z-index: 1;">
<tr>
<td width="34%" align="left" valign="top"><img src="/imgs/header/top_left.gif" width="176" height="99" alt="Header image"></td>
<td width="66%" background="/imgs/header/right_bg.gif" align="left" valign="top">
<div onmouseover="hide('advertenties')" onmouseout="show('advertenties')"><script type="text/javascript" language="JavaScript1.2" src="/cfgs/menu.js" style="z-index: 1;"></script></div></td> </tr>
<tr>
<td height="26" colspan="2" background="/imgs/header/inloggen/background_logged_in.gif" align="left" valign="top" class="white"><img src="/imgs/layout/mascotte.gif" alt="PHPhulp's mascotte" width="10" height="10"> <a href="/profiel/instellingen/" title="persoonlijke instellingen">instellingen</a> | <a href="/profiel/favorieten/" title="interne favorieten">interne favorieten</a> | <a href="/profiel/mailbox/" title="interne berichten">interne berichten</a> | <a href="/profiel/statistieken/" title="persoonlijke statistieken">statistieken</a> | <a href="/uitloggen/14017" title="uitloggen">uitloggen</a>
</td>
</tr>
<tr>
<td background="/imgs/header/inloggen/bot_bg.gif" height="19" colspan="2" align="left" valign="top"> </td>
</tr>
</table>
</form> </td>
</tr>
</table>
<head>
<title>PHPhulp - PHP Forum - style weghalen uit html</title>
<meta name="keywords" content="php, php algemeen, php hulp, phphulp, php support, php scripts, php tutorials, php links, php boeken, help, hulp, programmeren, programmering, mysql, databases, sql, webdesign, webmasters, boeken, ict, php help, php functies, php artikelen, scripts, functies, tutorials, artikelen, programming, programmers, xml, array, arrays, forum, forums, login, how to, language, articles, library">
<meta name="description" content="Alles over PHP. PHP scripts, PHP tutorials, PHP links, PHP boeken, een PHP forum en nog veel meer..">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript" language="JavaScript1.2" src="/cfgs/stm31.js"></script>
<link rel="stylesheet" href="/cfgs/phphulp.css" type="text/css" media="all">
<link rel="stylesheet" href="/cfgs/forum.css" type="text/css" media="all">
</head>
<body>
<!-- main table (including background -->
<table width="770" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="left" valign="top">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="33%" height="153" align="left" valign="top">
<!-- header (logo -->
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left" valign="top"><a href="http://www.phphulp.nl" title="PHPhulp"><img src="/imgs/header/logo.gif" width="258" height="108" alt="PHPhulp" border="0"></a></td>
</tr>
<tr>
<td valign="middle" background="/imgs/header/bluebackground.gif" class="loggedin" height="27" align="left" valign="top">
<b>Ingelogd als:</b> <a href="/profiel/user/14017/" title="Bekijk je profiel">Karl</a> </td>
</tr>
<tr>
<td height="18"> </td>
</tr>
</table>
</td>
<td width="67%" align="left" valign="top"> <!-- menu -->
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="z-index: 1;">
<tr>
<td width="34%" align="left" valign="top"><img src="/imgs/header/top_left.gif" width="176" height="99" alt="Header image"></td>
<td width="66%" background="/imgs/header/right_bg.gif" align="left" valign="top">
<div onmouseover="hide('advertenties')" onmouseout="show('advertenties')"><script type="text/javascript" language="JavaScript1.2" src="/cfgs/menu.js" style="z-index: 1;"></script></div></td> </tr>
<tr>
<td height="26" colspan="2" background="/imgs/header/inloggen/background_logged_in.gif" align="left" valign="top" class="white"><img src="/imgs/layout/mascotte.gif" alt="PHPhulp's mascotte" width="10" height="10"> <a href="/profiel/instellingen/" title="persoonlijke instellingen">instellingen</a> | <a href="/profiel/favorieten/" title="interne favorieten">interne favorieten</a> | <a href="/profiel/mailbox/" title="interne berichten">interne berichten</a> | <a href="/profiel/statistieken/" title="persoonlijke statistieken">statistieken</a> | <a href="/uitloggen/14017" title="uitloggen">uitloggen</a>
</td>
</tr>
<tr>
<td background="/imgs/header/inloggen/bot_bg.gif" height="19" colspan="2" align="left" valign="top"> </td>
</tr>
</table>
</form> </td>
</tr>
</table>
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<html>
<head>
<title>PHPhulp - PHP Forum - style weghalen uit html</title>
<meta>
<meta>
<meta>
<script>
<link>
<link>
</head>
<body>
<!-- main table (including background -->
<table>
<tr>
<td>
<table>
<tr>
<td>
<!-- header (logo -->
<table>
<tr>
<td>
</tr>
<tr>
<td>
<b>Ingelogd als:</b> <a>
</tr>
<tr>
<td>
</tr>
</table>
</td>
<td>
<table>
<tr>
<td>
<td>
<div>
<tr>
<td>
</td>
</tr>
<tr>
<td>
</tr>
</table>
</form> </td>
</tr>
</table>
<head>
<title>PHPhulp - PHP Forum - style weghalen uit html</title>
<meta>
<meta>
<meta>
<script>
<link>
<link>
</head>
<body>
<!-- main table (including background -->
<table>
<tr>
<td>
<table>
<tr>
<td>
<!-- header (logo -->
<table>
<tr>
<td>
</tr>
<tr>
<td>
<b>Ingelogd als:</b> <a>
</tr>
<tr>
<td>
</tr>
</table>
</td>
<td>
<table>
<tr>
<td>
<td>
<div>
<tr>
<td>
</td>
</tr>
<tr>
<td>
</tr>
</table>
</form> </td>
</tr>
</table>
Geen attribuut te zien. Sorry, maar ik zie het niet.
Ik weet alleen wel dat < en > niet ge-escaped hoeft te worden ;) Dus \< en \> is niet nodig.
Ik heb het even met wat minder html geprobeerd, nu werkt het wel goed.
Die tool werkt af en toe niet helemaal correct zoals je zou verwachten, dat komt door de actionscript.