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?
 

Bu konuyu görüntüleyen kullanıcılar

Technopat Haberler

Geri
Yukarı