我有一个PHP脚本,在我的Joomla DB中搜索#_content中的introtext字段,并将结果作为json_encoded字符串返回。
不确定原因,但是一些内部文本字段在JSON字符串中是NULL(例如{“introtext”:null},{“introtext”:null})当它们显然不是/不应该是。有些人回复文本就好了。
这是我的剧本。 。 。
<?php
/* Connect to database */
$DB_HostName = "**";
$DB_Name = "**";
$DB_User = "**";
@mysql_connect($DB_HostName,$DB_User) or die ('Could not connect');
@mysql_select_db($DB_Name) or die ('Could not find database');
$result = mysql_query ("SELECT introtext FROM **_content") or die (mysql_error());
$records = array();
while ($row = mysql_fetch_assoc($result)) {
$records[] = $row;
}
echo json_encode($records, JSON_HEX_TAG);
mysql_close();
?>
DB introtext字段包含HTML标记文本。当我直接在DB的phpMyAdmin工具中输入时,我上面写的查询就成功了。 introtext字段包含一些空白条目(e.g. <p></p>)
,但绝大多数都包含HTML标记文本。该查询返回* _content表中所有introtext字段的结果。
更新
我发现我的问题是json_encode函数。此功能仅适用于UTF-8编码数据,并非我的introtext中的所有内容都以此格式正确编码。如果编码不正确,则会返回NULL
。解决方案是通过我的PHP脚本中的函数运行我的数组,该函数将在返回json_encoded数据之前正确编码。
请参阅此链接,了解评论中的一些选项:http://www.php.net/manual/en/function.json-encode.php
现在我只需要删除所有HTML标记(使用strip_tags尝试完成此操作),这样我就可以使用文章文本了。任何有关如何做到这一点的建议表示赞赏。