PHP 重试值为字符串


PHP retry value to string

我有这个问题:

一个字符串,例如:

$stringa = "array('name' => 'John')"

我想获取:array('name' => 'John')用于我的代码,如数组

有什么帮助吗?谢谢

使用评估的注意事项...

注意 eval() 语言结构非常危险,因为它 允许执行任意 PHP 代码。因此,不鼓励使用它。 如果您已经仔细验证了除了 使用此构造,特别注意不要传递任何用户 在没有事先正确验证的情况下将数据提供给其中。

<?php
$stringa = "array('name' => 'John')";
$code = "'$a = " . $stringa . ";";
eval($code);
print_r($a);

Gouda Elalfy 的想法是正确的,但他的解决方案只是将整个字符串变成一个数组值。

首先,我们需要删除多余的数据类型信息:

$slimString = substr($stringa,6);
$slimString = rtrim($slimString,")");

现在这给了我们一串:

'name' => 'John' 

那么字符串中的Keysvalues需要拆分,所以在=>中断如下:

对于字符串中的多个值:此方法还包括单引号以限制捕获标点符号逗号(请注意,此方法因trim不如我希望的那样有效而需要str_replace引号而搞砸了)。

$slimString = str_replace("', '","=>", $slimString);

然后

$slimStringParts = explode("=>", $slimString);

这将在=>(或,)上拆分,以便可以生成数组内容的多个值。

然后循环遍历每个数组片段,基于数(和零)是Keys,ODD 数是values,也删除每个数组的引号,

我最初使用的是trim但由于某种原因,修剪没有像我预期的那样完全工作。 所以反而恢复到st_replace

foreach($slimStringParts as $key => $part){
    if(($key%2) == 0){
    $part = str_replace("'","",$part);
    $arrayOutput[$part] = str_replace("'","",$slimStringParts[$key+1]);
    }
} 
unset($key, $part);

foreach 仅作用于上面引用的偶数值和零值,它们以原始键值 + 1 作为其内容。trim/str_replace 删除了单引号,看起来不整洁,但这适用于一个或多个数组值的字符串

最后是输出:

 print_r($arrayOutput);

使用原件进行测试:

输入 : "array('name' => 'John')"

输出 : 数组 ( [名称] => 约翰 )

使用多值数组字符串进行测试:

输入 : "数组('名字

' => '约翰', '姓' => '詹姆斯', '骑' => '马')"

输出 : 数组 ( [名称] => 约翰 [姓氏] => 詹姆斯 [骑 ] =>匹马 )

完整代码:

$stringa = "array('name' => 'John')";
$stringb = "array('name' => 'John', 'surname' => 'James', 'Ride' => 'horse')";
$slimString = substr($stringb,6);
$slimString = rtrim($slimString,")");
$slimString = str_replace("', '","=>", $slimString);
$slimStringParts = explode("=>", $slimString);
foreach($slimStringParts as $key => $part){
    if(($key%2) == 0){
        $part = str_replace("'","",$part);
        $arrayOutput[$part] = str_replace("'","",$slimStringParts[$key+1]);
    }
}
unset($key,$part);
print_r($arrayOutput);
exit;

请注意,我trim()的想法是我想要的,但这似乎受到我的页面字符编码的影响:-(

您可以使用

eval()函数。

但它没有被推荐

http://php.net/manual/en/function.eval.php

Eval不安全,请尝试将其用作临时方法并找到更好的解决方案。

例:

$stringa="array('name' => 'John');";
$array = eval($stringa);