使用php自动生成C++;代码

使用php自动生成C++;代码,php,Php,如果您只想查看问题而不需要太多解释,请向下滚动 我有一个很大的应用程序,有很多值作为选项。应用程序的控制是一个网站,应用程序本身是C++,所有的选项都存储在MySQL中,这样C++和PHP都可以访问它。 所以我用PHP从文本文件中读取一组值,并自动生成SQL、C++和PHP代码,因为选项到处都是,而且太大了,所以实现它们需要太长时间,而且在将来添加额外选项太麻烦了。 这是我的文本文件的一行的外观 `input_video_standard`|:|INT|:|NOT NULL DEFAULT '0

如果您只想查看问题而不需要太多解释,请向下滚动

我有一个很大的应用程序,有很多值作为选项。应用程序的控制是一个网站,应用程序本身是C++,所有的选项都存储在MySQL中,这样C++和PHP都可以访问它。 所以我用PHP从文本文件中读取一组值,并自动生成SQL、C++和PHP代码,因为选项到处都是,而且太大了,所以实现它们需要太长时间,而且在将来添加额外选项太麻烦了。 这是我的文本文件的一行的外观

`input_video_standard`|:|INT|:|NOT NULL DEFAULT '0'|:|profile->input.videoStandard|:|Video Standard|:|SD 576i@50Hz (B,G/PAL)|:|SD 480i@59.94Hz (NTSC)|:|HD 720p@50Hz|:|HD 720p@59.94Hz|:|HD 1080i@25Hz|:|HD 1080i@29.97Hz
一旦我读到这句话,我就用

$pieces = explode("|:|", $line);

此部分用于生成C++代码 我有一个数组叫做变量,我存储C++的变量名和它的类型。

$variables[] = array($pieces[1], $pieces[3]);
一旦我循环浏览文本文件并收集所有数据

我尝试创建一个字符串,稍后将其存储在文本文件中

$cpp .= "memset(prof,0,sizeof(prof));\n";
$cpp .= "sprintf(prof, \"CALL put_into_input(%d, 'test'";
for($i = 3; $i<count($variables); $i++)
{
    if(strpos($variables[0], "VARCHAR") === FALSE)
    {
        $cpp .= ", %d";
    }
    else
    {
        $cpp .= ", '%s'";
    }
}
$cpp .= "\nprofile-".">"."pfile";
for($i = 3; $i<count($variables); $i++)
{
    $cpp .= ",\n".$variables[1];
}
$cpp .= ");\n";
$cpp.=“memset(prof,0,sizeof(prof));\n”;
$cpp.=“sprintf(prof,\”调用将输入(%d,'test');
对于($i=3;$i通常作为一个字符串,这就是为什么我尽可能地使用“-“>”。如何让php接受->作为一个字符串

感谢所有人的帮助

我注意到php一般不喜欢->作为字符串

字符串中的
->
没有问题

除非里面也有一些
$

这将使PHP认为您正在尝试访问对象实例的属性

例如,
$object->something
。您可以使用单引号而不是双引号来阻止PHP尝试解析字符串。除此之外,在字符串中使用
->
应该不会有任何问题

编辑

你的密码对我来说很奇怪

您正在执行
$variables[]=array($pieces[1],$pieces[3]);

这与
$variables=array(array($pieces[1],$pieces[3]);


所以你只有
$variables[0]
而没有
$variables[1]

你可以在引号中使用撇号?

在PHP中,双引号中的变量被解析

$var = "hello";
$str = "This is a variable: $var";

// The value of $str will be "This is a variable: hello"
使用单引号时,不解析变量

$var = "hello";
$str = 'This is a variable: $var'; // Please note the single quotes here

// The value of $str will be "This is a variable: $var"
我认为在你的例子中,
->
被认为是变量,因为这是面向对象编程用来获取属性和方法的语法

$object->property;
$object->method();
就我个人而言,每当我不需要为变量或正则表达式解析字符串时,我都会使用单引号


非常感谢,这已经奏效了!但是从文本文件中读取字符串怎么样?我无法控制它是否有双引号或单引号。我该如何处理?正在读取的字符串仍然显示为数组,而不是profile->input。videoStandard@Quillion:你把双引号都改成单引号了吗PHP文件中字符串的其他信息?是的,除了换行符之外,每个字符都有,所以如果我想要换行符,我会这样做“;”。“\n”;但除此之外,每个字符都是一个单引号。但是我的出错字符串存储在从文本文件读取的$variables[1]中,我会像$cpp.=”,“\n”这样连接它“$variables[1];这可能是问题所在吗?你能做一个
var_dump($variables[1])
print\r($variables[1]);
并报告结果吗?我这样做了。当我打印$pieces[3]的值时,当我打印$variables[]=array($pieces[1],$pieces[3]时,它会显示profile->input.videoStandard);然后打印它显示它是一个数组,第一个值为INT或VARCHAR,第二个值为“”。字符串是否以某种方式消失?如何连接字符串?我使用。连接字符串。