PHP str_replace未替换值
几天来,我一直在用头撞墙,因为所有的迹象都表明这应该有效,所以我显然错过了一些简单的东西 首先,我使用一个函数获取用户提交的评论数组PHP str_replace未替换值,php,str-replace,Php,Str Replace,几天来,我一直在用头撞墙,因为所有的迹象都表明这应该有效,所以我显然错过了一些简单的东西 首先,我使用一个函数获取用户提交的评论数组 function get_id_comment_info($id) { global $connection; $pdo = new PDO('mysql:host='.DB_SERVER.'; dbname='.DB_NAME, DB_USER, DB_PASS); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO:
function get_id_comment_info($id) {
global $connection;
$pdo = new PDO('mysql:host='.DB_SERVER.'; dbname='.DB_NAME, DB_USER, DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec('SET NAMES "utf8"');
$sql = "SELECT parks.parkid, parks.state, pcomment.parkid, pcomment.comment, pcomment.logname
FROM parks
LEFT JOIN pcomment
ON parks.parkid=pcomment.parkid
WHERE parks.id = '$id'";
$result = $pdo->query($sql);
$cominfo = $result->fetchAll();
return $cominfo;
}
然后,在按id处理每个停车场的foreach循环中,我正在处理数据:
foreach ($display_result as $parkrow) {
$id = $parkrow['parkid'];
$comments = get_id_comment_info($id);
$cleancom = str_replace("'", '', $comments);
print_r($cleancom);
.
.
.
}
$cleancom的输出为:
数组([0]=>Array([parkid]=>462[0]=>462[state]=>KS[1]=>
KS[2]=>462[评论]=>我注意到这里的一些人说不要
浪费你的时间,但我觉得没关系。是的,它比大多数都小,但是
如果你是一个狂热的骑手,那就有乐趣了。[3]=>我注意到了
有些人说不要浪费你的时间,但我觉得没关系。是的,
它比大多数都小,但如果你是一个狂热的人,那就有乐趣了
骑手。[logname]=>John32070[4]=>John32070))
它不会删除“”选项。如果我使用preg_replace,那么输出就是空的。我错过了一些简单的东西,但我就是看不到 我已经测试了
str_replace()
函数,得到了以下结果:
$myArray = array("h'i", array("hi'hi", "yo"));
print_r($myArray);
//RESULT: Array ( [0] => h'i [1] => Array ( [0] => hi'hi [1] => yo ) )
应用过滤器后:
$filtered = str_replace( "'", "", $myArray);
print_r($filtered );
//RESULT: Array ( [0] => hi [1] => Array ( [0] => hi'hi [1] => yo ) )
前面的结果表明,顶部数组中的任何字符串值确实正在转换(h'i
转换为hi
),而构成多维数组一部分的任何值(数组中的任何数组)都不是hi'hi
。这似乎就是创建函数的方式
一个解决方案是:
$cleancom = [];
foreach ($comments as $key => $value)
{
$cleancom[$key] = str_replace( "'", "", $value );
}
前面的代码之所以有效,是因为str_replace()
从未应用于多维数组,而在前面的代码中它是。但是,如果您在另一个数组中有一个数组,那么前面的代码将不起作用,因此,如果将来出现这种情况,我建议您尝试使用回调函数找到解决方案
让我知道这是否对您有效。想说点别的,您应该将ID放入一个数组中,然后使用MySQL
in()
函数,它只需要执行一次,而您的方法将执行多次。ahemglobal$connection你使用的是$pdo
。可能是重复的好吧,我一直在学习这个,我不知道为什么这样不好。你能解释一下吗?是什么阻止了这一切?你的质疑不会发生。使用全局$pdo代码>-我看不出它是如何工作的,不同的变量是全局变量。$display\u result
从何而来?它可能存储为unicode序列或其他字符,具体取决于数据库引擎、排序规则格式和其他设置。确保检查输出的源代码,以确保正在进行的操作,您知道,在浏览器中查看源代码这听起来是一个不错的解决方案,我需要一些实时时间来弄清楚如何执行。我不熟悉回调函数,但我要去学习如何使用它!非常感谢。我还有很多东西要学,多年来我一直在用弗兰肯斯坦的方式来做这件事。我只是希望我能参加一些编程课程,从头到尾地学习,而不是每天都试图找出新的东西。但我将利用周末学习回调函数。这似乎是我需要知道的。是的,它起作用了。你是我的英雄!