Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP str_replace未替换值_Php_Str Replace - Fatal编程技术网

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()
函数,它只需要执行一次,而您的方法将执行多次。

ahem
global$connection$pdo
。可能是重复的好吧,我一直在学习这个,我不知道为什么这样不好。你能解释一下吗?是什么阻止了这一切?你的质疑不会发生。使用
全局$pdo-我看不出它是如何工作的,不同的变量是全局变量。
$display\u result
从何而来?它可能存储为unicode序列或其他字符,具体取决于数据库引擎、排序规则格式和其他设置。确保检查输出的源代码,以确保正在进行的操作,您知道,在浏览器中查看源代码这听起来是一个不错的解决方案,我需要一些实时时间来弄清楚如何执行。我不熟悉回调函数,但我要去学习如何使用它!非常感谢。我还有很多东西要学,多年来我一直在用弗兰肯斯坦的方式来做这件事。我只是希望我能参加一些编程课程,从头到尾地学习,而不是每天都试图找出新的东西。但我将利用周末学习回调函数。这似乎是我需要知道的。是的,它起作用了。你是我的英雄!