Hallo schon wieder,
habe mir das nochmal angeschaut:
wenn die URLs nicht umgeschrieben werde funktioniert es ja
(z.B.
- Code: Alles auswählen
index.php?article_id=22
),
nur wenn ich die URLs leserlich haben möchte (z.B.
- Code: Alles auswählen
22-0-test.html
oder
- Code: Alles auswählen
test.html
) tauchen die Fehler auf (wenn Link zu Seite mit ID 2 schon auf der Seite vorhanden ist wird der Link zur Seite mit der ID 22 zu 2-0-seitenname.html
2).
Heißt das nicht, das der Fehler z.B. in der "function_rex_url.inc.php" liegt, also irgendwo dort wo die URL "geformt" wird?
edit:
hmm, scheint also wirklich an diesem Code class.rex_article zu liegen:
- Code: Alles auswählen
// -- preg match redaxo://[ARTICLEID] --
preg_match_all('/redaxo:\/\/([0-9]*)\/?/im',$content,$matches,PREG_SET_ORDER);
foreach($matches as $match)
{
if(empty($match)) continue;
$url = rex_getURL($match[1], $this->clang);
$content = str_replace($match[0],$url,$content);
}
habe daher eine Testseite erstellt die nur das obige macht:
- Code: Alles auswählen
<?php
$content = 'Dies ist ein test redaxo://2 und noch einer redaxo://25 und noch einer redaxo://36';
echo $content.'<br><hr><br>';
preg_match_all('/redaxo:\/\/([0-9]*)\/?/im',$content,$matches,PREG_SET_ORDER);
foreach($matches as $match)
{
if(empty($match)) continue;
echo 'match[0]: '.$match[0].' <br>';
echo 'match[1]: '.$match[1].' <br>';
echo 'match[1][0]: '.$match[1][0].' <br>';
echo 'match[1][1]: '.$match[1][1].' ENDE eines Durchgangs<br><br>';
$url = '<b>('.$match[1].')</b>';
$content = str_replace($match[0],$url,$content); //hier
}
echo '<hr>'.$content;
?>
als Ergebnis bekomme ich folgendes:
http://netsh70754.dbdserver.de/test.php
Liegt es denn wirklich an der der regex Lib?
So wie es für mich aussieht ersetzt er beim ersten Auffinden von
redaxo://2 den ersten Link durch "$content = str_replace($match[0],$url,$content)" und dabei gleichzeitig auch
redaxo://25, da hier ja auch
redaxo://2 drin vorkommt, was zu dieser Zeit $match[0] entspricht??
war das verständlich?
würde mich freuen, wenn mich jemand aufklären kann?