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şkenin adı sayıyla başladığından olabilir mi?
 
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.
 
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.
 
$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.
$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 siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…