用PHP调用Java类';s执行函数

用PHP调用Java类';s执行函数,java,php,Java,Php,我需要把一篇文章分成几个句子,我正在尝试使用斯坦福核心NLP。我已经下载了图书馆。因为它是一个Java库,所以我使用PHP的exec命令(请参见下文)来调用它。我的PHP脚本运行良好,我可以将文本解析为句子。目前,脚本需要一个输入文件进行解析。我的问题是,我是否可以使用PHP字符串变量代替input.txt文件。这对我来说非常方便,因为我将使用mysql db来检索文本/字符串。如果不可能,则需要为命令行输入创建相应的文本文件。我们将非常感谢您提供的任何反馈 这是我的小PHP脚本 $text =

我需要把一篇文章分成几个句子,我正在尝试使用斯坦福核心NLP。我已经下载了图书馆。因为它是一个Java库,所以我使用PHP的exec命令(请参见下文)来调用它。我的PHP脚本运行良好,我可以将文本解析为句子。目前,脚本需要一个输入文件进行解析。我的问题是,我是否可以使用PHP字符串变量代替input.txt文件。这对我来说非常方便,因为我将使用mysql db来检索文本/字符串。如果不可能,则需要为命令行输入创建相应的文本文件。我们将非常感谢您提供的任何反馈

这是我的小PHP脚本

$text = "Maria and Ted Bobola grow sweet corn. But with little corn to harvest because of a plant-withering drought, the Bobolas were forced to buy corn from Georgia to supply their produce and flower shop just outside Dover. And most years, the strawberry picking season runs three to five weeks, but not this year, store manager Dee Chambers said. ``It was so hot and dry that even though we irrigated, we had only two weeks in the season,'' she said. They did not recoup $70,000 they paid for strawberry plants last year in this year's harvest."; 

$parser = "stanford-corenlp-3.5.0.jar";
$class = "edu.stanford.nlp.process.DocumentPreprocessor"; 
$input = "sample.txt"; 
$output = "output.txt";  
if (exec( "java -cp $parser -Xmx2g $class -file $input", $result))
    {
        echo "success";
    }
    else
    {
        echo "failure"; 
    }

// Optional
echo '<pre>' . print_r($result, true); 
$text=“玛丽亚和特德·波波拉种甜玉米。但由于作物枯萎的干旱,玉米收成很少,博博拉人被迫从佐治亚州购买玉米,以供应多佛城外的农产品和花店。商店经理迪钱伯斯说,大多数年份,草莓采摘季节会持续三到五周,但今年不会``她说:“天气又热又干,即使我们灌溉,这个季节我们也只有两个星期的时间。”。去年在今年的收成中,他们并没有收回他们为草莓种植支付的7万美元。”;
$parser=“stanford-corenlp-3.5.0.jar”;
$class=“edu.stanford.nlp.process.DocumentPreprocessor”;
$input=“sample.txt”;
$output=“output.txt”;
if(exec(“java-cp$parser-Xmx2g$class-file$input”,$result))
{
呼应“成功”;
}
其他的
{
呼应“失败”;
}
//可选的
回显“”。打印错误($result,true);
这里我要做的是用$text(即一个php变量)替换$input(即txt文件)。

如果您将“-”作为文件名,许多程序将其视为“从标准输入读取”“。如果这样做了,也可能没有,那么您可以将其导入命令或使用herdoc。但这真的重要吗?您可以使用tempnam获取临时文件,使用file\u put\u内容写入它,然后使用unlink再次删除它,只需两到三行。然后,文本不需要转义(如果它包含引号或其他内容)就可以像从命令行本身传递文本一样进入shell。如果您将“-”作为文件名,许多程序将其视为“从标准输入读取”的意思。如果这样做了,也可能没有,那么您可以通过管道将其传输到命令中或使用herdoc。但这真的重要吗?您可以使用tempnam获取临时文件,使用file\u put\u内容写入它,然后使用unlink再次删除它,只需两到三行。然后,文本不需要转义(如果它包含引号或其他内容)就可以像从命令行本身传递文本一样进入shell。