PHP heredoc ayrıştırma hatası [kapalı]

5 Cevap string

Bu çıkış sayfa OK üretir

$mystring = "<<<EOT";

Aşağıdaki ile değiştirerek üretiyor

Ayrıştırma hatası: hattında 737 file.php sözdizimi hatası, beklenmedik $ end

$mystring = <<<EOT
   This is some PHP text.
   It is completely free
   I can use "double quotes"
   and 'single quotes',
   plus $variables too, which will
   be properly converted to their values,
   you can even type EOT, as long as it
   is not alone on a line, like this:
EOT;

Neye Herhangi bir fikir olarak boğulmamak için ayrıştırıcı neden oluyor?

PHP 4.4.7 kullanıyorum.

Bu davranış tüm diğerleri PHP tanımlanan işlevleri takip olur ki tek dosyada.

Ne recitify çalışıyorum PHP çözümleyici bu başarısızlık gösterir böylece proceding hatlarında belki yanlış olabilir budur.

John

Değiştirilen dosya içeriği için: -

<?php

$mystring = <<<WHATEVER
   This is some PHP text.
WHATEVER;
?>

result =

Ayrıştırma hatası: 5. satırdaki file.php sözdizimi hatası, beklenmedik $ end

Herhangi bir ipuçları

DÜZENLEME

Özgün hata T_ENCAPSED_AND_WHITESPACE bu {$ ikamesi için php değişken arıyor ayrıştırıcı başlayacak "yorumlu metin içinde Bigram olduğunu" if(x == y){$('#my_image').hide():} "Örneğin jQuery ile neden olabilir yapmak oldu.

DÜZENLEME

2 iyi tepkiler.

1) Ch4m3l3on - "<?php" vs "<?" taşıma.

2) Dezentegratörün - <q> bir utf-8 dosyası (görmezden tercihleri) de Reçetesi koyarak ısrarla bir aptal programı ile benzer bir sorun vardı </q>.

DÜZENLEME

1) tek bir blok ile tüm içeriğini değiştirme sorunu çözmek ya da başka herhangi bir işaretçiler vermedi.

2) Hiçbir BOM (Byte Order Mark), bu veya benzer majic karakterler gibi üzücü mükemmel tüm belirtiler açıkladı olurdu.

5 Cevap

Ne çalışırsanız:

$mystring = <<<'EOT'
...
EOT;

(EOT ilk etrafında tek tırnak dikkat edin)

emin EOT olun; hattının başlaması gerçekten.

if ($muh="kuh") {
     $foo = <<<EOT
           some text text text
EOT;
}

Ben sadece kopyala / bir dosyaya ve hatasız koştu yapıştırılır. (Yerleşik PHP 5.2.8 (cli) (: 6 Şubat 2009 12:33:08))

Yani sorun söz dahil kodda birşeyler yakın muhtemel bir şeydir, ama değil.

Bu, ya da sürüm inşa beri PHP bir değişiklik ya.

Muhtemelen kapanmamış kıvırcık desteğini varsa (ya da ayraç, hatırlayamıyorum) kontrol etmelisiniz.

Örneğin:

<?php

while(true) {
    echo "Something\n";

?>

Bu hata üretecektir.

Ben bir uptic için temsilcisi yok, ama Ch4m3l3on ve Pedro Cunhna doğru ... yanlış bir heredoc muhtemelen beklenmeyen $ end hataya neden olmaz, fakat bir kapanmamış kaşlı ayraç kesinlikle olacaktır.