cybton.com
Über uns | Jobs | Werbung | Sitemap | AGB | Impressum | Hilfe ?
 Kostenlos anmelden)
wichtigHier wird nichts mehr gelöscht!
Forum
Aktuellste Beiträge
Forenregeln

Community
BB-Codes
Tags
Chat
Suche (Web)
Wer ist online?
Top-User

Basar


Statistik
Mitglieder gesamt: 69765
Mitglieder online: 3
Gäste online: 1
mehr...

Anzeige
Forum » Forum: Website & Webprogrammierung » Thread: PHP bestimmte Tags entfernen

Thread: PHP bestimmte Tags entfernen

Seite 1 von 321234Letzte »

29.01.2009 14:38 Uhr

 

Status: offline
Hallo Leute,

ich versuche gerade eine Funktion zu schreiben, die bestimmte Tags löschen soll. Das ganze versuche ich mit regulären Ausdrücken. Nur funktioniert das noch nicht ganz.

Hier mal der Code
+ php:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function delUnwantedTags ($code)
{
  $tags = array('script','noscript','iframe');
 
  for($a=0;$a<count($tags);$a++)
  {
    $suchmuster = '<'.$tags[$a].'([^\\[]*)>([^\\[]*)<\/'.$tags[$a].'>';
    $ersatz = '';
    $code = eregi_replace($suchmuster, $ersatz, $code);
    echo $suchmuster;
    echo ";";
  }
  return ($code);
}
Und hier die Ausgabe des Suchmusters:
PHP:
1
<script([^\[]*)>([^\[]*)<\/script>;<noscript([^\[]*)>([^\[]*)<\/noscript>;<iframe([^\[]*)>([^\[]*)<\/iframe>;]
PS: gibt es eine Eigenschaft für den [ code ] Block, die für reguläre Ausdrücke gedacht ist?
___________________________
MFG Jan
"funzt nicht" ist keine gültige Fehlerbeschreibung!*haarerauf*
http://www.sysprofile.de/id30821
29.01.2009 15:21 Uhr

 

bmk
Moderator
Status: offline
Das sollte doch etwas einfacher gehen...
PHP:
1
$code = preg_replace('#<' . $tag . '.*</' . $tag . '>#iU'), '', $code);
Es beginnt also zB mit "<script", dann kommt alles mögliche bis zum End-Tag "</script>". Durch den Modifier "U" ists ungreedy, er nimmt also mit dem .* in der Mitte nicht mehr als nötig.
1 mal bearbeitet
___________________________
Let's code responsibly...
Webcrawler -- Portal für Dirigenten -- Musikverein Königstetten
29.01.2009 15:58 Uhr

 

Status: offline
Klappt nicht:
php:
1
2
3
4
5
6
7
8
9
10
function delUnwantedTags ($code)
{
  $tags = array('script','noscript','iframe');
 
  for($a=0;$a<count($tags);$a++)
  {
    $code = preg_replace('#<' . $tags[$a] . '.*</' . $tags[$a] . '>#iU', '', $code);
  }
  return ($code);
}
___________________________
MFG Jan
"funzt nicht" ist keine gültige Fehlerbeschreibung!*haarerauf*
http://www.sysprofile.de/id30821
29.01.2009 17:15 Uhr

 

Status: offline
Hallo

Ich würde es auch ohne die For-Schleife machen ^^
einfach nur das Array mit den unerwünschten Strings definieren und dann mit preg_replace() alles ersetzen / löschen.

Gruß

//EDIT
Sorry ich sehe gerade, dass es ohne die For-Schleife wohl nicht geht (in diesem Beispiel)
Aber ich habe mal folgendes gemacht:
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
function delUnwantedTags($code)
{
      $tags = array("script", "noscript", "iframe");
      for($a = 0;$a <= count($tags);$a++)
      {
      $code = preg_replace("#<".$tags[$a].".*</".$tags[$a].">#Ui", "", $code);
      }
      return $code;
}
?>
Und du hast in deiner Signatur stehen
Zitat von Signatur (klasse7darg:
"funzt nicht" ist keine gültige Fehlerbeschreibung!*haarerauf*
Was genau funktioniert denn nicht? Kommt eine Fehlermeldung? Ersetzt er es nicht?
Steht dann garnix mehr da (also wird der ganze text ersetzt anstatt nur die HTML-Tags + den Text dazwischen)?
3 mal bearbeitet
29.01.2009 18:04 Uhr

 

Status: offline
ich raffs nicht  :roll: 

Ich versuche mich gerade mit dem Regex Coach...

Ich hab folgenden Ausdruck:
PHP:
1
<script([^\\[]*)>*<\/script>
Diese erkennt aber nur diesen Abschinitt:
PHP:
1
2
3
<script language="JavaScript" type="text/javascript">
document.write('<a href="http://clk.atdmt.com/DWO/go/102276815/direct/01/" target="_blank"><img src="http://view.atdmt.com/DWO/view/102276815/direct/01/"/></a>');
</script>
Aber nicht den hier:
PHP:
1
2
3
4
5
6
7
8
9
<script type="text/javascript">
<!--//--><![CDATA[//><!--
function openWindow() {
  window.open('/newsticker/meldung/audio/126565', 'Vorlesen', 'width=492,height=600,left=100,top=100,menubar=no,status=no,scrollbars,resizable,toolbar=no,hotkeys,location=no');
}
document.write('<div class="readspeaker"><a href="javascript:openWindow()"><img src="/icons/ho/vorlesen_download.gif" alt="Meldung vorlesen und MP3-Download" width="150" height="13" class="ISI_IGNORE" /><' + '/a><' + '/div>');
//--><!]]>
 
</script>
Wie muss ich den Ausdruck erweitern, damit er sich nicht durch die Kommentare ver*****en lässt?
___________________________
MFG Jan
"funzt nicht" ist keine gültige Fehlerbeschreibung!*haarerauf*
http://www.sysprofile.de/id30821
29.01.2009 18:56 Uhr

 

Status: offline
Reg-Ex Modifikatoren
So, wie es mir ans Herz gelegt wurde, tue ich das nun auch bei dir =)
Der Modifikator "s" (kleines s) oder "m" (kleines m) müsste dir da weiterhelfen =)
PHP:
1
2
3
<?php
code = preg_replace("#<".$tags[$a].".*</".$tags[$a].">#Uis", "", $code);
?>
oder
PHP:
1
2
3
<?php
code = preg_replace("#<".$tags[$a].".*</".$tags[$a].">#Uim", "", $code);
?>
Gruß
29.01.2009 19:26 Uhr

 

Status: offline
Warum verweist ihr eigendlich immer auf die PRCE und gebt keine Hilfe zu den POSIX Regex
Sind die schlechter oder könnt ihr die einfach nicht?
___________________________
MFG Jan
"funzt nicht" ist keine gültige Fehlerbeschreibung!*haarerauf*
http://www.sysprofile.de/id30821
29.01.2009 19:30 Uhr

 

Status: offline
klasse7darg: Ich persönlich habe das Gefühl, dass PRCE gebräuchlicher ist und auf php.net steht unter den POSIX-Regular-Expressions ja auch:
Zitat:
Die Funktion preg_replace(), die eine zu Perl kompatible Syntax regulärer Ausdrücke verwendet, ist häufig die schnellere Alternative zu ereg_replace().


Ab bmks Funktion fiel mir noch auf, dass du für deine mehrzeiligen Script-Tags wohl noch das Flag s setzen musste (treat string as single line).
PHP:
1
2
<?php
$code = preg_replace('#<' . $tag . '.*</' . $tag . '>#iUs'), '', $code);
Geprüft habe ich das nicht.
1 mal bearbeitet
29.01.2009 19:32 Uhr

 

Status: offline
Hallo

1. Hat es geholfen oder nicht?
2.
Zitat von php.net:
Tipp

Die Funktion preg_replace(), die eine zu Perl kompatible Syntax regulärer Ausdrücke verwendet, ist häufig die schnellere Alternative zu ereg_replace().


//EDIT
@zombie3456
Wieso musstest du da jetz unbedingt schneller sein als ich??^^
1 mal bearbeitet
29.01.2009 20:24 Uhr

 

Status: offline
@zombie:
Zitat:
<br />
<b>Parse error</b>: syntax error, unexpected ',' in <b>/srv/www/heise.php</b> on line <b>28</b><br />


@derdeagle:
Es scheint zu funktionieren!
Danke
___________________________
MFG Jan
"funzt nicht" ist keine gültige Fehlerbeschreibung!*haarerauf*
http://www.sysprofile.de/id30821
Seite 1 von 321234Letzte »
Ähnliche Threads Forum Ähnlichkeitsgrad
 [gelöst]php regexp problem Website & Webprogrammierung 2
 [geloest]Regular Expression fuer HTML-Code mit Entities Website & Webprogrammierung 2
 [done] - Regex spinnt? - PHP / dank geht an HangMan Website & Webprogrammierung 2
 Regulärer Ausdruck - IP erkennen Website & Webprogrammierung 2
 Nur bestimme Anzahl von Bildern erlauben Website & Webprogrammierung 2
 [Regex] Übersetzungshilfe für non-perl kompatibel zu perl kompatibel Website & Webprogrammierung 2
 [Regex] [mod_rewrite] Hilfe für Rewrite gesucht Website & Webprogrammierung 2
nach obennach oben

Copyright © 2018 cybton-network

Google
Partner: #Musik - Dein Internetradio - nexem. - .wir machen news
ANEXIA - PHP Entwicklung - Web-Entwicklung - Fritz!Box Anrufmonitor für Mac OS - Rolladen, Markisen und Jalousien in Stuttgart - Rolladen in Stuttgart - SMSjobs