【问题标题】:Get variable value by name from a String从字符串中按名称获取变量值
【发布时间】:2016-12-13 22:04:39
【问题描述】:

这适用于服务器端,与客户端无关。

$data= file_get_contents('textfile.txt'); 

textfile.txt 包含

var obTemperature = "55";
var obIconCode = "01";

我可以输入什么以便获得55echo obTemperature 值?

难道没有一个简单的 php 接口来按名称读取 var 值吗?

请不要过于复杂/半答案/拖钓,

【问题讨论】:

  • 作为替代方案,您可以使用 json 文件代替,在您的 php 端,只需获取内容,json 解码就可以了
  • 谢谢您尝试过,但结果过于复杂。 .放弃了。
  • 好吧,不管你的船是什么,我都会这样做,{"obTemperature" : "55", "obIconCode": "01"},只需文件获取内容,json 解码,你就有了自己的价值观,做你想做的事
  • php 不是 javascript,不解析 javascript 代码,也不运行 javascript 代码,它们不兼容。您需要将 JS 代码视为 php 中的字符串,并尝试使用正则表达式之类的东西来匹配模式。如果您认为 JSON 过于复杂,那么为此使用正则表达式会差一千倍。
  • 您想在 PHP 端将 echo 替换为 obTemperature? Javascript 您的 PHP 在浏览器的 内部 完成运行后运行。 PHP before Javascript 在浏览器之外运行。你确定你需要像这样在你的 PHP 代码中访问一个 JS 变量吗?

标签: javascript php server-side var


【解决方案1】:

一般来说你最好解释一下你想要做什么,但如果你被绑定到这种文件格式并且格式是一致的:

$data = str_replace('var ', '$', $data);
eval($data);

echo $obTemperature;
echo $obIconCode;

但是,任何其他类型的 JavaScript 代码都会导致解析错误。

另外,您可以将其视为ini 文件:

$data = str_replace('var ', '', parse_ini_string($data));
echo $data['obTemperature'];

或者只是:

$data = parse_ini_string($data);
echo $data['var obTemperature'];

【讨论】:

  • 感谢您尝试按名称从文件中获取值。 .
  • 一旦你 eval($data) echo 如何从 eval 中读取? ..谢谢你的好回答
  • 当您eval 时,会创建变量供您使用。
  • 谢谢如果 var obTemperature = "55" ( 缺少分号) 我试过 $data = str_replace('"PHP_EOL', '";PHP_EOL', $data); (也试过 \n 和 r 而不是 php_Eol
  • 你必须有一些一致性才能让任何事情发挥作用。对于缺少 ; 替换 \n; 或其他东西。如果数据不一致,则不会有任何效果。
【解决方案2】:

你可以使用正则表达式:

preg_match('/var obTemperature = "(\d+)";/', $data, $match);
$temperature = $match[1];

DEMO

【讨论】:

  • 回声$温度;没有产生任何东西,谢谢巴马尔
  • 我添加了一个演示,表明它可以工作。如果它不适合您,则该文件不包含您所说的内容。也许空间与您展示的不完全一样?您显然可以调整正则表达式以使其更灵活。
猜你喜欢
  • 2022-12-15
  • 2022-12-14
  • 2014-02-08
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多