Ben dinamik oluşturulacak olan büyük bir matematiksel ifade var. "$foo+$bar/$baz";
: Ben "şey" çözümlü kez Örneğin, sonuç gibi bir dize olacaktır.
Yani, bu gibi eval
function ... şey kullanıyorum bu ifadenin sonucunu hesaplamak için:
eval("\$result = $expresion;");
echo "The result is: $result";
Burada sorun, bazen bir bölümü sıfıra olduğunu söylüyor hataları olsun, ve ben bu özel durum yakalamak için nasıl bilmiyorum olmasıdır. Gibi şeyler denedim:
eval("try{\$result = $expresion;}catch(Exception \$e){\$result = 0;}");
echo "The result is: $result";
Veya:
try{
eval("\$result = $expresion;");
}
catch(Exception $e){
$result = 0;
}
echo "The result is: $result";
Ama çalışmıyor. Yani, nasıl bir sıfıra bölünme olduğu zaman benim uygulama çöker önleyebilirsiniz?
Edit:
Öncelikle, ben bir şey açıklamak istiyorum: ifade dinamik inşa edilmiştir, yani payda sıfır ise sadece eval olamaz. Yani ... Mark Baker açıklama getirmedi, sana bir örnek vereyim. Benim ayrıştırıcı böyle bir şey inşa olabilir:
"$foo + $bar * ( $baz / ( $foz - $bak ) )"
Ayrıştırıcı ... vars değeri endişesi olmadan adım adım inşa dize böylece bu durumda $foz == $bak
bir bölümü sıfıra aslında varsa: $baz / ( 0 )
.
Pete önerdiği gibi Öte yandan, denedim:
<?php
$a = 5;
$b = 0;
if(@eval(" try{ \$res = $a/$b; } catch(Exception \$e){}") === FALSE)
$res = 0;
echo "$res\n";
?>
Ama hiçbir şey yazmıyor.