我有一个,我认为相当简单,但我无法弄清楚我做错了什么.我有一个函数,我用PHP的函数调用eval.我期待一个自建的ArrayList得到结果.但相反,当我使用时,gettype我看到结果是NULL.即使我return在eval-ed函数中使用.
据我所知,我正在通过文档播放它,但不知怎的,它不起作用.有什么建议?
代码片段
<?php
$widgetList = new ArrayList();
for($i = 0; $i < $selectedTemplate->Regions->count(); $i++)
{
$region = $selectedTemplate->Regions->item($i);
if($region->Widget->selectiveContent == 1)
{
$widgetList->add($region->Widget);
}
}
if($widgetList->count() > 0)
{
?>
<tr>
<td colspan="2">
<strong>Widget instellingen</strong>
<hr size="1" width="100%" color="#333"/>
</td>
</tr>
<?php
for($i = 0; $i < $widgetList->count(); $i++)
{
?>
<tr>
<td class="w150">
<?= $widgetList->item($i)->title ?>
</td>
<td>
<select name="widget_<?= $widgetList->item($i)->id ?>" class="full">
<?php
$itemList = eval($widgetList->item($i)->functionCall);
for($j = 0; …Run Code Online (Sandbox Code Playgroud) 我有一些我在Perl中解析的数据,并且将在不久的将来添加越来越多不同格式的数据.我想要做的是编写一个易于使用的函数,我可以传递一个字符串和一个正则表达式,它将返回括号中的任何内容.它会像这样工作(伪代码):
sub parse {
$data = shift;
$regex = shift;
$data =~ eval ("m/$regex/")
foreach $x ($1...$n)
{
push (@ra, $x);
}
return \@ra;
}
Run Code Online (Sandbox Code Playgroud)
然后,我可以这样称呼它:
@subs = parse ($data, '^"([0-9]+)",([^:]*):(\W+):([A-Z]{3}[0-9]{5}),ID=([0-9]+)');
Run Code Online (Sandbox Code Playgroud)
如您所见,此代码存在一些问题.我不知道eval是否会起作用,'foreach'肯定不会起作用,而且不知道有多少括号,我不知道循环多少次.
这对于拆分来说太复杂了,所以如果还有其他功能或可能性我忽视,请告诉我.
谢谢你的帮助!
这是一个不符合我期望的示例脚本:
#!/bin/bash
for dynamic in a b c; do
myvar=$dynamic
export $myvar="hi"
echo $(eval "$myvar")
echo $dynamic
done
Run Code Online (Sandbox Code Playgroud)
我希望输出是:
hi
a
hi
b
hi
c
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我愿意偏离这种方法,但我绝对希望能够创建一个从算法输出中命名的变量.在这种情况下,它只是一个for循环.
我遇到了以下一些代码的问题,我想知道我做错了什么.
我在进行eval调用的行上遇到了Uncaught SyntaxError:Unexpected token)错误.
function myfunction(){
var p1 = '';
var p2 = '';
var p3 = '';
for (i=1; i<=3; i++){
eval("$('#p"+i+"').closest('.filter').find('.vals div').each(function(){if ($.trim(p"+i+").length > 0) {p"+i+" += ',';} p"+i+" += $(this).attr('class');});");
}
}
Run Code Online (Sandbox Code Playgroud)
这是适用的HTML:
<div class="filter">
<label>Organizations</label>
<input id="p1" type="text" value="" />
<div class="vals">
<div class="3" title="Click to remove">ABC School District</div>
<div class="4" title="Click to remove">DEF School District</div>
</div>
</div>
<div class="filter">
<label>Groups</label>
<input id="p2" type="text" value="" />
<div id="vals"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
如果不是很明显我也在这里使用jQuery.
谢谢
我有一个名为的两个numpy数组,dec_pair并dec_community在一个名为config.pyinitial 的模块中初始化为零:
dec_pair = numpy.zeros(200)
dec_community = numpy.zeros(200)
Run Code Online (Sandbox Code Playgroud)
现在,我试图从其他模块访问它们,比如说roc.py,它们的名称是根据输入变量形成的,即
import config
def dosomething(name):
local_name = 'config.py'+name
eval(local_name)[i:] += 1
Run Code Online (Sandbox Code Playgroud)
哪里name可以pair或community.问题是,eval(local_name)返回numpy数组的长度,即200这里而不是数组本身,这给了我这个错误:
ValueError:无法切片0-d数组
但是,当我在python解释器上做同样的事情时,它运行顺利:
>>> dec_pair = numpy.zeros(5)
>>> name = 'pair'
>>> local_name = 'dec_'+name
>>> eval(local_name)
array([ 0., 0., 0., 0., 0.])
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么,以及做正确的方法是什么?
我需要使用eval()来构建我正在构建的基于JavaScript的Web应用程序.
这样做的原因是我想让人们编写自己的函数来存储为文本,并且可以在网站上重新使用,然后需要再次使用它们.按照jsFiddle的思路思考.
代码将运行并评估,或者作为脚本标记插入.无论哪种方式,它都会让恶意用户开放JavaScript注入网站.因此,我打算过滤提交的代码,或者当用户加载另一个用户的脚本时,有一条警告消息,用户应该在继续之前首先阅读/检查脚本.
到目前为止,我希望过滤/警告以下关键字:
eval
execScript
script
window.*
setInterval
setTimeout
alert
confirm
prompt
document.*
write
innerHTML
insertAdjacentHTML
createElement
appendChild
setAttribute
form.*
submit
XMLHttpRequest
jQuery.*
ajax
base64encode
base64decode
Run Code Online (Sandbox Code Playgroud)
我还没有开始测试,所以这些只是我最初的想法.
有人对此有经验或意见吗?
谢谢,戴夫
我正在学习Python 3.x. 我想编写一个评估输入值并打印结果的函数.如果最初输入了字符串,则该函数应该只打印字符串而不进行评估.
def eval_input():
line=input("Something:")
print(eval(line))
eval_input()
Run Code Online (Sandbox Code Playgroud)
它适用于整数和数学运算.但是当输入一个字符串时,就像" fasdfasd"一样,它会出错:" name 'fasdfasd' is not defined".我理解为什么会发生这种错误.因为" fasdfasd"被视为变量.但我不明白如何检查字符串是否最初输入?
在评估之前如何从输入中填充字符串?
在c中是否有办法将字符串转换为命令?例如:
void x(string n){
//do something
}
void y(int n){
//do something
}
void z(int n){
//do something
}
stringForConvert="z(10);y(2);x(\"Its cool\");";
mysteryCommand(stringForConvert);
Run Code Online (Sandbox Code Playgroud)
请注意,我没有奢侈的写入另一个文件并进行编译.
如何将Scala中的字符串转换为相应的运算符?给定两个整数和字符串"+"我想要添加这两个整数的结果.
我写了一个宏:
(defmacro te
[a b & c]
`(print
~(a b c)))
Run Code Online (Sandbox Code Playgroud)
并运行
(te print 2 inc 4)
Run Code Online (Sandbox Code Playgroud)
得到了一个错误 ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn user/eval8010 (form-init8519408738377285198.clj:1)
然后我跑
(macroexpand-1 '(te print 2 3 4)
;=> (clojure.core/print (3 4))
Run Code Online (Sandbox Code Playgroud)
这意味着(print 2 (3 4))回归(3 4)?功能print有bug吗?
我的clojure版本1.7.0,JVM版本1.8.0_65-b17
更新
好的,举例不容易理解这个例子.
即使我跑了
(te print 2 inc 4)
user=> (te print 2 inc 4)
;=> 5nil
user=> (macroexpand-1 '(te print 2 inc 4))
;=> (clojure.core/print (inc 4))
Run Code Online (Sandbox Code Playgroud)
它会打印5并返回 …