PHP preg_replace i zapytanie mysql w funkcji - brak zmiennej

Witam, mam problem i nie mogę sobie z min poradzić.

To co pokaże jest podobne do BBcode

Powiedzmy że mam taki ciąg

[telefon]

używając preg_replace zmienne wklejam do fukcji linktelefon($aaa,$bbb);

$text = preg_replace ("|\[telefon]*?)\]|i",linktelefon('\\1','\\2'),$text);

Fukcja za pomocą id (tutaj zmiennej $aaa) pobiera całą nazwę telefonu oraz tworzy linka.

function linktelefon($aaa,$bbb)

   {

      $zbazy=mysql_query("SELECT id,producent,model FROM telefony WHERE `id`='$aaa' ");

         while($pobrane=mysql_fetch_array($zbazy))

         {

	return ''.$bbb.'';

      };

      };

[/code]

Mój problem polega na tym, że w funkcji w zapytaniu mysql zmianna $aaa ma wartość 1, a nie jak podałem 130. Zauważyłem, że zmieniając w drugim kodzie '\1 na np. '\4 to w zapytaniu mysql w zmiennej $aaa widnieje właśnie liczba 4. Z drugą zmienną nie mam żadnych problemów.

W funkcji są użyte stałe, a nie zmienne i dlatego taki błąd występuje. Musisz zastąpić dane, bo do funkcji są złe dane przekazane.

Np

$zmienna1 = "130";

$zmienna2 = "Galaxy"

moja_funkcja($zmienna1, $zmienna2);


fucntion moja_funkcja($z1, $z2)

{

echo "zmienna pierwsza to:".$z1;

echo " a zmienna 2 to:".$z2;

}

I tutaj jest właśnie błąd, bo zamiast postawionej $zmienna1, masz daną liczbę jak 1 lub 4, a ona musi się zmieniać, żeby wszystko trybiło.

Dlatego musisz dokonać zmian w:

$text = preg_replace ("|[telefon]*?)]|i",linktelefon(’\1’,’\2’),$text);

Dzięki za wskazówki :slight_smile:

Wpis poniżej działa poprawnie

$text = preg_replace (’|[telefon]*?)]|i’,“linktelefon(’\1’,’\2’)”,$text);

No źle doczytałem bo jest napisane wyżej, ale jak pomogłem to się ciesze :slight_smile: .