javascript - 使用 php 从数据库中获取带引号或撇号的字符串,使用 json_encode,然后尝试在 javascript 中解析 JSON
问题描述
我在数据库中有一个完整的字符串表,每个大约一个句子。有些有引号或撇号。我在 React-native 中运行 fetch,它运行一个 php 文件。这个 php 文件从表中获取一个随机项并将其回显,以便 javascript 可以解析 JSON 字符串并对其进行处理。如果字符串包含引号或撇号,应用程序会因“JSON 解析错误:意外 EOF”而崩溃。我尝试过 addlashes(),甚至尝试使用 php 函数 str_replace() 用晦涩的字符替换引号和撇号。无论哪种方式,我仍然会收到崩溃和相同的错误消息。这是这里的部分代码:
$get_fate = "SELECT * FROM $fates ORDER BY RAND() LIMIT 1";
$run_fate = mysqli_query($con, $get_fate);
$num_fates = mysqli_num_rows($run_fate);
if ($num_fates == 1) {
$row_fate = mysqli_fetch_assoc($run_fate);
$fate = $row_fate['fate'];
$msg = addslashes($fate);
$msg_json = json_encode($msg);
echo $msg_json;
} else ...
和 javascript 方面:
getFate = async () => {
let user = await AsyncStorage.getItem('email');
fetch('fetch address goes here', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application.json',
},
body: JSON.stringify({
email: user
})
}).then((response) => response.json())
.then((responseJson) => {
this.setState({fate: responseJson});
}).catch((error) => {
console.error(error);
});
}
这是崩溃的图像:
如果这意味着什么,我收到了一份包含所有这些“命运”的大字文件。我在 python 中使用了 fates.splitlines() 将它们全部分成单独的字符串并将它们放入一个数组中,我在 php 中循环并插入到数据库中。然后我注意到在引号和撇号应该有某种克林贡语的文本,所以我用以下 SQL 查询“修复”了它:
UPDATE choose_your_fate SET fate = REPLACE(fate, '“', '“');
UPDATE choose_your_fate SET fate = REPLACE(fate, 'â€', '”');
UPDATE choose_your_fate SET fate = REPLACE(fate, '’', '’');
UPDATE choose_your_fate SET fate = REPLACE(fate, '‘', '‘');
解决方案
我让它工作了。通过手动输入将所有命运添加到数据库中;它不喜欢他们从word文档中复制粘贴。当我从数据库中取出它们时,有必要使用 addlashes(); 功能,以便文本显示在应用程序屏幕上。
推荐阅读
- macos - Apple TextEdit,它的工具栏从何而来?
- angular - 无法使用 ng bootstrap modal 使用 angular 4 获取多参数值
- haskell - 是否可以在 Haskell 中具有具有多个类型签名的函数
- php - 根据持续时间以百分比计算 div 宽度
- ruby-on-rails - Rails activeadmin 导出 PDF
- git - 当我克隆按钮单击时括号 Git 错误
- reporting-services - web.config 中的 Vuejs 和 SSRS 报告连接
- python - 性能 - 在 Python 中比较 2 个大型字符串列表的最快方法
- javascript - 在常规 html 页面中使用 vue-multiselect.js
- wordpress - 如果 WordPress 类别为空,如何显示一行文本?