Fehler bei Variablenübergabe bei replace

Freakz91

Grünschnabel
Moin Leute,

ich habe ein Problem mit einem preg_replace. Irgendwie wird ein Variable nicht richtig übergeben.

Hier ist der Code. Vielleicht kann ja jemand von euch mir weiterhelfen...

PHP:
//Link wird umgewandelt
function seofusion ( $seo );
{

$seo = preg_replace('#news\.php\?readmore=([0-9]*?)(\'|")#si',
"n\\1_".ns("\\1").".htm\\2", $seo);

return $seo;
}



//mit der id wird der Titel der News ausgelesen
function ns($id) 
	{
		$title = dbarray(dbquery("SELECT news_subject FROM ".DB_PREFIX."news WHERE news_id='$id'"));
		// seotitle(); = Aus dem Titel werden die Sonderzeichen entfernt
		return (seotitle($title[news_subject]));
	}

Eigentlich funktioniert dieser Code sehr gut bis auf ein Problem:
Wenn beim ersten mal die id ausgegeben wird funktioniert alles, wenn man jedoch mit der id den News_Namen ausgeben will funktioniert es nicht. Es wird immer der Name der ID 1 ausgeben.

Die Links sehen dann so aus:

n1_test-fuer-seofusion.htm
n2_test-fuer-seofusion.htm

die ID ändert sich richtig nur der Titel ist bei allen Links gleich, obwohl in der Datenbank verschiedene Namen sind...

Ich bin mir sicher das der Fehler beim pre_replace liegt...sieht jemand von euch den Fehler?

Mfg Freakz
 
Hi,
wenn die ID korrekt ist, wie kann dann das preg_replace falsch sein? Schließlich gibt das ja die ID zurück.

Wenn du dir den SQL String ausgeben lässt, kommt dann jedesmal die gewünschte ID?
PHP:
$sql = "SELECT news_subject FROM ".DB_PREFIX."news WHERE news_id='$id'"
echo $sql;
$title = dbarray(dbquery($sql));

Vielleicht versteh ich es ja auch nicht so genau :D

Gruß
 
PHP:
function seofusion($seo)
{
	$seo = preg_replace('#news\.php\?readmore=([0-9]*?)(\'|")#sie', 
'"n\\1_".ns("\\1").".htm\\2"', $seo);
	return $seo;
}
function ns($id)
{
	$title = dbarray(dbquery("SELECT news_subject FROM ".DB_PREFIX."news WHERE news_id='$id'"));
	// seotitle(); = Aus dem Titel werden die Sonderzeichen entfernt
	return seotitle($title['news_subject']);
}
 
Zurück