Ben PHP 4.X çalışmak ve PHP 5.2.4 çalışmıyor kullanılan bazı kod ile bir sorun yaşıyorum
Her şeyden önce, soruna neden olan benzer bir kod küçük bir örneği var. Ne yazık ki, ben küçük bir örnek ile sorunu yeniden mümkün olmamıştır.
<?php
class Example{
public function showExample()
{
$ind = 1;
$m = "method";
$str2 = "{call method}";
$str2 = str_replace("{call $m}" , "<?php print( \$pre$ind ); ?>", $str2);
echo $str2 . "\n";
}
}
$e = new Example();
$e -> showExample();
?>
Bu kod yapıyor daha sonra çalıştırmak için bazı php kod ile bir dize inşa ediyor. Özellikle, üretilen kod "$ öncesi" + Değişken bir sayı adında bir değişkenin değerini yazdırmak olacaktır. Bu durumda, çıkış şudur:
<?php print( $pre1 ); ?>
Her şey bu kod ile iyi çalışır. Sorun çok daha büyük bir sınıfın bağlamında kullandığınız zaman, ben uzun zamandır kullanıyorum bir çerçevenin parçası olduğunu. Burada sınıfın bütün kaynağını yapıştırmak değil, ancak sorunlu çizgiler (I str_replace kaldırmak için onları biraz basitleştirilmiş, ancak hata hala görünür) aşağıdaki gibidir:
$myVar = "value";
$myVar2 = 2;
$str2 = "<?php print( \$myVar$myVar2 ); ?>";
Ben dosyayı yüklediğinizde, ben şu iki mesaj olsun:
PHP Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /Users/giove/Sites/mundial/htmltemplate.php on line 252
PHP Parse error: syntax error, unexpected T_VARIABLE in /Users/giove/Sites/mundial/htmltemplate.php on line 252
Ben '\' kaldırarak uyarı düzeltmek, ancak bu kodun semantik, bu yüzden gerçek bir olasılık değil.
Now, the weirdest part is I can remove both errors by breaking or removing the sequence "
Bu sürüm bir fark gibi görünüyor, ama ben değişim günlükleri kendisine herhangi bir söz bulmak mümkün olmamıştır.
Şimdi Cryo bir çalışma çözümü var: dize bölmek
"<?php"
onun 'değerlendirme aşamasında' (gerçekten bir değerlendirme eğer ben emin değilim) önlemek için.
Yine de, ben yine de bu garip davranışın nedenini bilmek istiyorum.
Cryo: birkaç gün içinde cevap olarak yardımınız için teşekkürler, ben soru işareti olacak.