PHP onClick vervangen met eregi_replace

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik probeer in een string een onclick statement te vervangen mbv eregi_replace.

De lengte van de onclick waarde kan variabel zijn.

Ik heb alle van alles geprobeerd en ben nu tot het volgende resultaat gekomen

$htmlBody = eregi_replace('onclick="(.*^")["]',"",$htmlBody);

Dit leek me logisch: zoek naar: onclick=" vervolgens alle karakters behalve een " en als afsluiting weer een ".
Echter dit werkt niet.

Kan iemand mij hiermee helpen?

Links naar regex tutorials heb ik niet nodig, want die heb ik al, maar daar kom ik dus niet uit.

[solved]

$pattern = '/onClick=\"[^\"]*\"/ims';
$htmlBody = preg_replace($pattern, "", $htmlBody);

[ Voor 15% gewijzigd door Verwijderd op 04-05-2004 14:41 . Reden: Solved ]


Acties:
  • 0 Henk 'm!

Verwijderd

ik gok dat met jouw code de hele onClick="(.*)" verdwijnt, terwijl je dat niet wilt. Wat je kan doen is:

PHP:
1
2
$s = "<a href=\"linkje.html\" onClick=\"Javascript:clickMe();\">link!</a>";
$s = preg_replace("/onClick=\"(.*)?\"/ims", "onClick=\"\"", $s);


bovenstaand stukje code haalt de hele onClick meuk eruit, maar zet er weer een lege voor terug.

[ Voor 17% gewijzigd door Verwijderd op 04-05-2004 14:29 ]


Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
PHP:
1
$htmlBody = preg_replace('/onclick=\"(.*)\"/msiU',"",$htmlBody);

En deze haalt 'm weg...

Maar de oplossing is erg tricky... Wat als bijv. dit:
code:
1
onclick="testfunctie('dit is een \"huisje\"')"

in de onclick staat?!?!

[ Voor 17% gewijzigd door beetle71 op 04-05-2004 14:33 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

PHP:
1
$pattern = '/onClick=\"[^\"]*\"/ims';

Dat is volgens mij wat je zoekt. Quotes moeten dacht ik ge-escaped worden, en die ^ (not) operator mag alleen in die rechte haken geloof ik. Heb het niet getest though.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

beetle71 schreef op 04 mei 2004 @ 14:33:
PHP:
1
$htmlBody = preg_replace('/onclick=\"(.*)\"/msiU',"",$htmlBody);

En deze haalt 'm weg...
En wat als dit in zijn source staat?
HTML:
1
<a onclick="blaat();" href="blaat.html">

Wordt dat niet dit dan:
HTML:
1
<a onclick="">

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
NMe84 schreef op 04 mei 2004 @ 14:34:
PHP:
1
$pattern = '/onClick=\"[^\"]*\"/ims';

Dat is volgens mij wat je zoekt. Quotes moeten dacht ik ge-escaped worden, en die ^ (not) operator mag alleen in die rechte haken geloof ik. Heb het niet getest though.
Dit pattern doet precies wat ik wil. Bedankt.

DarthRaider: jouw code doet precies hetzelfde als wat ik al met eedere code had. Hij haalt veel te veel weg. Van 200 regels blijven er nog maar een stuk of 10 over :)

Dit werkt perfect:

$pattern = '/onClick=\"[^\"]*\"/ims';
$htmlBody = preg_replace($pattern, "", $htmlBody);

Iedereen bedankt

Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
NMe84 schreef op 04 mei 2004 @ 14:36:
[...]

En wat als dit in zijn source staat?
HTML:
1
<a onclick="blaat();" href="blaat.html">

Wordt dat niet dit dan:
HTML:
1
<a onclick="">
Nee, want er staat een U in de modifier dus Ungreedy matching.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

beetle71 schreef op 04 mei 2004 @ 14:55:
[...]


Nee, want er staat een U in de modifier dus Ungreedy matching.
Ah, op die fiets. Ben eigenlijk wel nieuwsgierig hoe jouw versie van mijn versie verschilt. Straks thuis maar ff kijken. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1