php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.09.2007, 20:20  
Erfahrener Benutzer
 
Registriert seit: 06.08.2003
Beiträge: 453
PHP-Kenntnisse:
Fortgeschritten
Mano
Standard Bestimme HTML Tags mittels RegEx rausfiltern

Hallo,
ich möchte mit folgendem Script einige HTML Tags komplett aus einem String entfernen. Leider funktioniert dieses nicht. Hat jemand eine Idee?

PHP-Code:
<?php
      $preg_pattern     
= array("/(\<ul.*\>)(.*)(\<\/ul\>)/""/(\<li.*\>)(.*)(\<\/li\>)/""/(\<a.*\>)([a-zA-Z])(\<\/a\>)/");
      
$preg_replacement = array("","","");
      
$xml_string       preg_replace($preg_pattern$preg_replacementtrim($xml_string));
?>
Diese Schnipsel soll komplette <ul> und[*] Tags rausfiltern und <a> Tags welche nur Text und keine Bilder <img> enthalten.
Mano ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.09.2007, 20:55  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

http://www.phpfriend.de/forum/ftopic62595.html

weiteres dann später
nikosch ist gerade online  
Alt 25.09.2007, 23:40  
Erfahrener Benutzer
 
Registriert seit: 06.08.2003
Beiträge: 453
PHP-Kenntnisse:
Fortgeschritten
Mano
Standard

Ganz einfache Kiste, mit der oben genannten Maßnahme werden die Tags nicht rausgefiltert.

Die ersten beiden Flags gehen nur wenn ich anschließend nochmal den String mit einem srtip_tags aufrufe. Und der dritte Flag mit den Link - hier wird der Link garnicht erkannt und rausgefiltert.
Mano ist offline  
Alt 26.09.2007, 01:39  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Also bei mir werden die Tags getroffen, zumindest <ul>. Deshalb poste doch einfach die Werte, mit denen du das ganze getestet hast! Ansonsten entwickel deine RegExps eben in einem RegExpTester.
Zergling-new ist offline  
Alt 26.09.2007, 03:50  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Zitat von Zergling
Deshalb poste doch einfach die Werte, mit denen du das ganze getestet hast!
Genau. Ansonsten ergeben wir uns hier nur wieder wilden Spekulationen.

Beim <ul> gehe ich davon aus, dass Dein Code mehrzeilig ist und Du schlicht einen /s Parameter benötigst. Auch die Gierigkeit des Ausdrucks wird Dir bei mehreren <ul>'s Probleme bereiten. Groß- und Kleinschreibung wird auch nicht abgedeckt. Genanntes gilt auch für die anderen Ausdrücke. Die Greedyness könnte auch der Grund sein, warum der dritte Ausdruck nicht matcht.
Meines Wissens müssen spitze Klammern auch nicht escaped werden, die \ für Slashes sparst Du Dir mit einem anderen Ausdrucksbegrenzer, bspw. der Raute. Schließlich und endlich können die runden Klammern weggelassen werden.
nikosch ist gerade online  
Alt 26.09.2007, 12:02  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

PHP-Code:
<?php
$html
=<<<HTM
<html>
<head>
</head>
<body>
<h1>Test</h1>
<ul>[*]blja[*]blua[/list][url="http://keineahnung.de"]keine Ahnung[/url]
[url="http://keineahnung.de"][img]irgendwas.jpg[/img][/url]
</body>
</html>
HTM;

$doc=new DOMDocument();
$doc->loadHTML($html);

$xpath = new DOMXPath($doc);
$aweg=$xpath->evaluate('//a[img] | //ul');

foreach(
$aweg as $ax)
{
  
$ax->parentNode->removeChild($ax);
}
echo 
$doc->saveHTML();
?>
Edit: sorry
wenn die 'A' elemente nur mit dem Text drinen gelöscht sein müssen
dann muss ausdruck so aussehen '//a[child::text()!=""] | //ul'
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 27.09.2007, 14:22  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard Re: Bestimme HTML Tags mittels RegEx rausfiltern

Zitat:
Zitat von Mano
Diese Schnipsel soll komplette <ul> und[*] Tags rausfiltern und <a> Tags welche nur Text und keine Bilder <img> enthalten.
Rausfiltern oder löschen? Oder ersetzen? Beachte auch, dass die[*]-Tags meistens innerhalb von <ul>-Tags stehen, also mit letzeren schon gelöscht werden.
Der folgende Ausdruck funktioniert mit diesen Pattern:
Code:
$preg_pattern     = array("|(<ul.*>)(.*)([/list])|siU", "|(<li.*>)(.*)()|siU", "|(<a.*>)([^<>]+)(</a>)|siU");
__________________
Gruss
L
lazydog ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Posix Regex: Problem beim HTML Tags suchen PHP Tipps 2005 2 13.09.2008 17:57
[Erledigt] Regex für alle Tags auf Level 1 Andreas PHP-Fortgeschrittene 4 16.11.2006 07:58
nur erlaubte html tags umwandeln PHP Tipps 2006 2 30.10.2006 13:53
RegEx nicht für Tags stefanjann PHP Tipps 2006 2 16.03.2006 10:58
Regex um alle Html Tags zu entfernen? heohni PHP Tipps 2006 2 09.03.2006 21:58
[Erledigt] Validation Problem - HTML Tags in Javascript HTML, Usability und Barrierefreiheit 7 06.03.2006 23:38
HTML Tags als Text ausgeben? cebe PHP Tipps 2006 1 03.03.2006 15:50
html tags filtern mit regex PHP-Fortgeschrittene 11 06.01.2006 11:42
html tags filtern mit regex UND string ergänzen PHP Tipps 2006 14 06.01.2006 02:02
Erkennung von HTML Tags McLain PHP-Fortgeschrittene 4 26.04.2005 10:03
Datei Upload mittels html Formular auf tripod server PHP Tipps 2005 5 16.04.2005 08:36
Filtern von HTML Tags aus String PHP Tipps 2005 2 18.02.2005 08:44
[Erledigt] Frage: Text abschneiden aber auf html tags achten PHP-Fortgeschrittene 1 19.01.2005 20:46
[Erledigt] imap_qprint ohne (HTML Tags) PHP-Fortgeschrittene 0 29.09.2004 14:09
[Erledigt] Probleme mit html tags! PHP Tipps 2004 5 28.07.2004 23:37

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/php-tipps-2008/44823-bestimme-html-tags-mittels-regex-rausfiltern.html, regex raute, script aus html entfernen regex, regex tags entfernen, php regex raute, html rausfiltern, php html rausfiltern, php regex spitze klammer, srtip_tags, javascript html tags entfernen, html tags ausfiltern, regex filter html, regex links filtern, ganze html tags removen regex, raute regex php, php ausfiltern <ul>, php regexp raute, html nur body tag filtern php, regular expression kompletten tag löschen, regex klammern entfernen

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:07 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.