2016-05-20 35 views
1

我正在从数据库中获取内容,但是这种内容格式不正确,我想实现。删除部分PHP字符串之前echo

如何数据来自DB:

{"5":"The content"} 

在第一套""数量是每个条目,而不是顺序不同。

我只需要这个内容。使用PHP删除不需要的字符串部分的最佳方法是什么?

这是我当前如何显示内容:

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo $row["form_data"]. "<br>"; 
    } 
} else { 
    //empty message will be here 
} 
+0

它看起来像JSON这样过来的结果,并循环解码或使用类似'复位()'来获得第一个/唯一元素的值。 – jeroen

+0

你是否需要''5“来自'{”5“:”内容“}'? –

+0

您的'$ row [“form_data”]是否包含“{”5“:”内容“}'? –

回答

1

这是一个JSON字符串,所有你需要做的是json_decode()该字符串

使用json_decode()的第二PARAM的JSON转换成一个阵列,无论它是什么定义为JSON即你是一个对象,那么您可以简单地使用current数组语法来获取内容部分,而不管这些数据中的数字(5)是什么。

$data = json_decode($row["form_data"], true); 
echo current($data); 
+2

不要回显'第5个索引。使用'current'。由于这个*在第一组“”中的数字是不同的每个条目,而不是顺序。* –

+0

@ HankyPanky好的电话,没想到那 – RiggsFolly

+0

完美,谢谢! :) –

1

呼应

没有之前删除PHP字符串的部分,其实没有。

{"5":"The content"} 

JSON,继续decode到您喜欢并采取号码。没有必要尝试通过一些字符串操作来解析字符串。

运行这一点,你会看到,你可以自己编写代码的

print_r(json_decode('{"5":"The content"}',true)); 

休息时,不需要复制粘贴回答吧? :)

0

您可以使用json_decode做的是,这是一个例子:

$string = '{"5":"The content"}'; 
    $json = json_decode($string); 
    var_dump($json->{'5'}); 

,其结果是:

string 'The content' (length=11) 

如果不是5,但你要第一个记录,你可以这样做:

$string = '{"5":"The content", "6":"The"}'; 
    $json = json_decode($string); 
    foreach ($json as $key => $value) { 
     var_dump($value); 
     exit; 
    } 

这将只打印第一个值

或者更好的,你可以使用current()

var_dump(current($json)); 
+2

如果有一天它不是5呢? –