2009-07-28 4 views
0

Ich habe eine Situation. Ich lese in einer HTML-Seite mit PHP mit diesem Stück Code $body = file_get_contents('index.htm');So entfernen Sie ein Stück HTML-Tags in einer HTML-Seite mit PHP

Jetzt in der Datei index.htm ist ein Stück HTML-Code wie unten, dass ich manchmal zu entfernen/hängt von Kriterien ab, so muss es manchmal sein entfernt und manchmal nicht.

<td><table><tr><td></td></tr></table></td> 

Wie entferne ich den ganzen Tabelle Abschnitt zwischen den td-Tags PHP.

Antwort

1

Eine Möglichkeit, zu tun, kann es

$str = '<td><table><tr><td></td></tr></table></td>'; 
preg_match('/(<td>)(<table>.*<\/table>)(<\/td>)/',$str,$matches); 

das resultierende Array

Array 
(
    [0] => <td><table><tr><td></td></tr></table></td> 
    [1] => <td> 
    [2] => <table><tr><td></td></tr></table> 
    [3] => </td> 
) 

verwendet werden können, die

'<td></td>' 

ohne Tabellenteil

+0

Ihre Lösung funktioniert nicht, wenn der TD Attribute oder die TABLE hat. –

+0

Sie haben Recht, aber er hat in der Frage nicht angegeben, dass er Attribute hat, aber der Regexp kann angepasst werden, um mit variablen attrs umzugehen, oder (wie ich denke) der HTML, den er entfernen muss, ist immer von gleicher Art , so kann er Attribute in der Regexp fest codieren. –

2

Wenn Sie Glück haben, dass Ihre Seite XML ist, dann könnten Sie ein DOM bilden und das aus dem DOM entfernen. Ansonsten sollte ein regulärer Ausdruck einfach sein, solange Sie nicht geschachtelt haben <table> s (in diesem Fall ist es immer noch möglich, aber schwieriger).

+0

Sie können auch bei Verschachtelung erhalten, wenn Sie Rekursion Lookaround verwenden. – eyelidlessness

+0

Er, Rekursion * und * Lookaround. Natürlich sind diese nicht streng "regulär", sie sind PCRE-Erweiterungen. – eyelidlessness

1

Sie neu kann t entfernen Er Tabelle zwischen td mit einem regulären Ausdruck Ersatz.

$html=preg_replace('/<td([^>]*)><table[^>]*>.*<\/table><\/td>/', '<td$1></td>', $html); 

Dies funktioniert auch, wenn Sie Attribute in Ihrem oder in Ihrem

habe ich versucht, es selbst (RegEx Tester) und es funktioniert, hoffe, es funktioniert auch für Sie.

Verwandte Themen