使用PHP查询序言

时间:2016-12-25 12:47:10

标签: php prolog swi-prolog

我正在尝试使用PHP和prolog制作一个数独游戏,想法是使用prolog程序来解决数据,然后通过PHP获得结果,我已经写下这段代码,但我得到一个空输出 我甚至尝试使用var_dump进行测试,我得到string '' (length=0) 这是我的代码:

<!DOCTYPE>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Soduku</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id="content">
<?php

$output=exec("\"c:/Program Files (x86)/swipl/bin/swipl-win.exe\" -g \"test,halt\" -t \"halt(1)\" test.pl ");
var_dump($output);
echo $output;
echo"<pre>";
print_r($output);
echo"</pre>";

?>


</div>
</body>
</html>

我的代码编辑后

<!DOCTYPE>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Soduku</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id="content">
<?php

exec('"c:\\Program Files (x86)\\swipl\\bin\\swipl-win.exe" -g "st,halt" -t "halt(1)"  -s test.pl',$output,$return_var);
var_dump($output);
echo $return_var;


?>


</div>
</body>
</html>

显示此结果

array (size=0)
  empty
0

2 个答案:

答案 0 :(得分:1)

我有finnaly找到了如何做到它太简单了,我只需要执行swipl.exe而不是swipl-win.exe,正确的语法是

$cmd='"c:/Program Files (x86)/swipl/bin/swipl.exe" -g solve_problems,halt -t halt(1) sud.pl' ;

答案 1 :(得分:0)

doc表示exec返回最后一行,您可能有一个空行作为最后一行。要获得完整输出,请使用第二个参数:

exec("\"c:/Program Files (x86)/swipl/bin/swipl-win.exe\" -g \"test,halt\" -t \"halt(1)\" test.pl ", $output);
var_dump($output);