PHP'de "$1.data" değişken okunmuyor

Katılım
5 Mart 2014
Mesajlar
5.701
Makaleler
12
Çözümler
44
"preg_replace" kullanarak aşağıdaki kodu fonksiyona yönlendirdim.
PHP:
AddMedia("$1")
Kodda şu yazıyor:
PHP:
function AddMedia($Data)
{
    $Media = GetMedia("$Data");
    return "<img src = '$Media'></img>";
}
Hata şu:
Kod:
Warning: file_get_contents($1.data): failed to open stream: No such file
"$1" değişkeni normalde bir değer fakat neden fonksiyona normal bir değer gibi gelmiyor? Nasıl çözülür?
 
Değişken sayı ile başlayamaz. Ayrıca gönderdiğiniz veri bir dizi olarak gidiyor ise
PHP:
function AddMedia($Data['obje'])
{
    $Media = GetMedia($Data['obje']);
    return "<img src = '$Media'></img>";
}
şeklinde deneyebilirsiniz. Değişkenleri de tırnak içinde yazmayın string olarak geri döner yoksa.
 
Preg replace ile böyle yazılır, sayıyla yazılamaz dediğine bakma. $1, $2 veya her neyse replace edilen kelimeden başka bişey değildir. Fakat fonksiyonu replace içinde değilde preg_replace'yi değişkene bağlayıp oradan fonksiyona aktarın. Yani örnek;

PHP:
$var = preg_replace('/[a-z+]/', '$1', $replacedVar);

file_get_contents("{$var}.data");

Gibi.
 
Değişken sayı ile başlayamaz. Ayrıca gönderdiğiniz veri bir dizi olarak gidiyor ise
PHP:
function AddMedia($Data['obje'])
{
    $Media = GetMedia($Data['obje']);
    return "<img src = '$Media'></img>";
}
şeklinde deneyebilirsiniz. Değişkenleri de tırnak içinde yazmayın string olarak geri döner yoksa.
PHP:
function MyCode($input)
{
    $first = array("~\[Test\](.*?)\[/Test\]~s");
    $second = array(AddMedia($1));
    $output = preg_replace($first, $second, $input);
    return $output;
}
Kod örnek olarak bu şekilde.
 
Preg replace ile böyle yazılır, sayıyla yazılamaz dediğine bakma. $1, $2 veya her neyse replace edilen kelimeden başka bişey değildir. Fakat fonksiyonu replace içinde değilde preg_replace'yi değişkene bağlayıp oradan fonksiyona aktarın. Yani örnek;

PHP:
$var = preg_replace('/[a-z+]/', '$1', $replacedVar);

file_get_contents("{$var}.data");

Gibi.
$1 olarak yazdığınız bir değişken değildir. Degiskenin konumunu belirtmek için kullanılan referanslardir.
 
$1 olarak yazdığınız bir değişken değildir. Degiskenin konumunu belirtmek için kullanılan referanslardir.
Ben de farklı bişey demedim zaten. Değişken sayı ile yazılamaz dediniz diye öyle bir açıklama yaptım.
PHP:
function MyCode($input)
{
    $first = array("~\[Test\](.*?)\[/Test\]~s");
    $second = array(AddMedia($1));
    $output = preg_replace($first, $second, $input);
    return $output;
}
Kod örnek olarak bu şekilde.
$first ve $second değerini array olarak atama sebebiniz nedir? Bu doğru bir kullanım değil.

Yani:

PHP:
function MyCode($input)
{
    $output = preg_replace('~\[Test\](.*?)\[/Test\]~s', AddMedia($1), $input);
    return $output;
}

Burada hata AddMedia($1). Doğrusu şöyle olabilir:

PHP:
function MyCode($input)
{
    $output = preg_replace('~\[Test\](.*?)\[/Test\]~s', '$1', $input);
    $output = AddMedia($output);
    return $output;
}
 
Ben de farklı bişey demedim zaten. Değişken sayı ile yazılamaz dediniz diye öyle bir açıklama yaptım.

$first ve $second değerini array olarak atama sebebiniz nedir? Bu doğru bir kullanım değil.

Yani:

PHP:
function MyCode($input)
{
    $output = preg_replace('~\[Test\](.*?)\[/Test\]~s', AddMedia($1), $input);
    return $output;
}

Burada hata AddMedia($1). Doğrusu şöyle olabilir:

PHP:
function MyCode($input)
{
    $output = preg_replace('~\[Test\](.*?)\[/Test\]~s', '$1', $input);
    $output = AddMedia($output);
    return $output;
}
Çünkü bu bir örnek. İçinde yaklaşık 30 tane değişken var. Dizi olması lazım. Ben bunu bu şekilde fonksiyona yönlendirince dizi olarak mı değişkene ulaşacağım?
 

Technopat Haberler

Geri
Yukarı