我需要打开一个包含php和html代码的文件,并将一些声明的变量更改为用户选择的值:
文件开始:
<?php mb_internal_encoding("UTF-8"); ?>
<div class="redshop_product td"><!-- for <?php echo basename(__FILE__, '.php')?> //-->
<!-- REDshop entry for A Bigger Bundle /title --> <?php $outofstock=1; $explanation="Expected back in stock 12 June"; ?>
AND THEN LOTS OF HTML AND JAVASCRIPT WHICH MAKES UP THE ITEM DISPLAY
我需要打开文件,检查$ outofstock和$说明的值,并用用户选择的任何内容替换它们,然后使用新值保存文件。我有一个功能
function get_string_between($string, $start, $end){
$string = " ".$string;
$ini = strpos($string,$start);
if ($ini == 0) return "";
$ini += strlen($start);
$len = strpos($string,$end,$ini) - $ini;
return substr($string,$ini,$len);
}
我用来从文件中选择字符串,并且非常适合普通的html和javascript。例如
get_string_between($contents, "<!-- REDshop entry for ", " /title");
会给你“更大的捆绑”。 但是我无法弄清楚如何使用php声明。所以
$outofstock=get_string_between($contents, '<?php $outofstock=', ';');
什么都不返回(应该是1)
以下是有问题的代码部分:
$contents = strstr(file_get_contents("products/".$_POST['StockToggle'].".php"), ' -->', true);
$outofstock=get_string_between($contents, '<?php $outofstock=', ';'); $explanation=get_string_between($contents, '$explanation="', '";');
$productname=get_string_between($contents, "<!-- REDshop entry for ", " /title");
我如何实现我想要的任何想法?
答案 0 :(得分:1)
outofstock
为空的原因是因为它$contents
中不存在。继续打印$contents
您会发现它是:
<?php mb_internal_encoding("UTF-8"); ?>
<div class="redshop_product td"><!-- for <?php echo basename(__FILE__,'.php')?> //
这是因为您对strstr
的结果使用了file_get_contents
并且只返回了文件的内容,直到第一个&#34; - &gt;& #34;,这是在第一个echo和basename业务之后。
要修复此问题,您应该加载完整文件而不要使用strstr
答案 1 :(得分:0)
您当前的实施不适合此类操作。只需使用数据库并存储所有变量。如果您没有数据库服务器,请使用SQLite。如果您不能使用SQLite,那么您可以创建两个名为1.dat和2.dat的文件并将所有变量存储在那里,然后只需将它们读入您的变量。