Ressourcen sparen bei preg_match
Viennamade
- php
Hallo liebe Forumer!
Die folgende Schleife habe ich aus den FAQ der de.comp.lang.php.* kopiert, sie ersetzt alle Links einer HTML-Datei:
$pattern = '=^(.*)<a(.*)href="?(\S+)"([^>]*)>(.*)</a>(.*)$=msi';
while (preg_match($pattern, $pagecontent, $txt))
{
/* $txt[3] enthält die gewünschte URL. */
/* $zeile neu bauen */
$pagecontent = $txt[1]." hier war mal ein Link ".$txt[6];
}
Eine andere Möglichkeit ist es $txt bereits vor der Schleife zu 'befüllen', also das preg_match eben vor der Schleife zu machen.
Und dann über das fertige $txt zu schleifen und dabei die Änderungen an $pagecontent vorzunehmen.
Ist die letztere Methode nicht ressourcensparender? Schneller?
Beste Grüße
Viennamade
Hallo!
$pattern = '=^(.*)<a(.*)href="?(\S+)"([^>]*)>(.*)</a>(.*)$=msi';
while (preg_match($pattern, $pagecontent, $txt))
{
/* $txt[3] enthält die gewünschte URL. */
/* $zeile neu bauen */
$pagecontent = $txt[1]." hier war mal ein Link ".$txt[6];
}
Wieso verwendest Du nicht einfach preg_replace()?
Grüße
Andreas
Hallo!
$pattern = '=^(.*)<a(.*)href="?(\S+)"([^>]*)>(.*)</a>(.*)$=msi';
while (preg_match($pattern, $pagecontent, $txt))
{
/* $txt[3] enthält die gewünschte URL. */
/* $zeile neu bauen */
$pagecontent = $txt[1]." hier war mal ein Link ".$txt[6];
}
Wieso verwendest Du nicht einfach preg_replace()?
Stimmt, ich frage mich auch ob ich auf dem Holzweg bin. Hier steht in $inhalt der HTML-Quelltext einer Seite drinnen, die img-Elemente sollen ersetzt werden durch: Bild-Alt = Inhalt des alt-Attributes und Bild-Title = Inhalt des Title-Attributs.
preg_match_all("/<img.id="(.*)".src="(.*)".title="(.*)".alt="(.*)"./>/U",$inhalt,$bilder,PREG_SET_ORDER);
foreach ($bilder as $x => $val)
{
$bildelement = $bilder[$x][0];
$bildelement = addcslashes($bildelement,""/");
$inhalt = preg_replace('/' . $bildelement . '/sU',"<p>Bild-Alttag:" . $bilder[$x][3] . "</p>" . "<p>Bild-Title:" . $bilder[$x][4] . "</p> ",$inhalt);
}
Holzweg? Falscher Weg? Einbahnstraße? Achtung Abgrund?
? und Beste Grüße
Viennamade