String in Tag suchen

Guten Morgen

ich habe bspw. folgenden String:
TestString

wie kann ich nach color:#CCCCCC; suchen und den gesamten Tag in TestString ändern?

Vielen Dank für die Hilfe schon im Voraus!

Gruss
Dennis

Hallo

ich habe bspw. folgenden String:
TestString

wie kann ich nach color:#CCCCCC; suchen und
den gesamten Tag in TestString
ändern?

Quick Hack:


$html = ’ blah
TestString
blah’;

function fcol($i) { return preg_match(’/^color/’, $i); }
function scol($m) { return $m[1].implode(’’, array_filter(explode(’;’, $m[2]), ‚fcol‘)); }

$html_neu = preg_replace_callback(’/(style\s*=\s*["’])([^"’>]+)/’, ‚scol‘, $html);

Aber vielleicht hat jemand eine bessere Idee?

Grüße

CMБ

Quick Hack:


$html = ’ blah
TestString
blah’;

function fcol($i) { return preg_match(’/^color/’, $i); }
function scol($m) { return $m[1].implode(’’,
array_filter(explode(’;’, $m[2]), ‚fcol‘)); }

$html_neu =
preg_replace_callback(’/(style\s*=\s*["’])([^"’>]+)/’,
‚scol‘, $html);

Aber vielleicht hat jemand eine bessere Idee?

Grüße

CMБ

Vielen Dank für deine Hilfe! Dies funktioniert sehr gut!

Nur hab ich das Problem, dass sich in der $html Variabel noch andere Tags befinden und er bei denen auch das Verfahren anwendet… Wie kann ich dieses Vorgehen explizit, bzw. ausschliesslich auf Tags fokussieren?

Gruss
Dennis

Hallo

Nur hab ich das Problem, dass sich in der $html Variabel noch
andere Tags befinden und er bei denen auch das Verfahren
anwendet… Wie kann ich dieses Vorgehen explizit, bzw.
ausschliesslich auf Tags fokussieren?

Das kannst Du einfach mit reinschreiben:


$html_neu = preg_replace_callback(’/(]+)/’, ‚scol‘, $html);

Grüße

CMБ

Hallo R3Lillusion,

wenn es nicht gerade um ms genaue schnelligkeit geht und es sich um viel HTML handelt (das dazu valide ist) dann empfehle ich dir die DOM und / oder die simpleXML Klasse von PHP.

Dann könntest du alle span tags per xpath selektieren und bearbeiten.

// http://de2.php.net/manual/de/book.dom.php
$dom = new DomDocument;
$dom-\>formatOutput = true;

$dom-\>load('deineDatei.html');
$dXpath = new DOMXPath($dom);
$nList = $dXpath-\>query('\\span');

foreach($nList as $span)
{
 $span-\>setAttribute('style', 'dein css');
}

echo $dom-\>saveHTML();

der Code ist nicht getestet aber das wäre dann ein Weg es zu machen.

Das kannst Du einfach mit reinschreiben:


$html_neu =
preg_replace_callback(’/(]+)/’,
‚scol‘, $html);

Grüße

CMБ

Vielen Dank für Deine Hilfe, funktioniert einwandfrei!

Gruss
Dennis