Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.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_Arrays_Str Replace - Fatal编程技术网

Php 使用str_replace替换多个字符串无效

Php 使用str_replace替换多个字符串无效,php,arrays,str-replace,Php,Arrays,Str Replace,站点页面: $id = 'groups_permissions.php,b.php,c.php,d.php'; $site\u pages='groups\u permissions.php、b.php、c.php、d.php' 要替换的值: $id = 'groups_permissions.php,b.php,c.php,d.php'; 预期结果: 应为空 我使用以下命令使用上述逗号分隔列表创建数组: // THIS WILL CREAET ARRAY LIKE

站点页面:

$id = 'groups_permissions.php,b.php,c.php,d.php';
$site\u pages='groups\u permissions.php、b.php、c.php、d.php'

要替换的值:

$id = 'groups_permissions.php,b.php,c.php,d.php';
预期结果:
应为空

我使用以下命令使用上述逗号分隔列表创建数组:

            // THIS WILL CREAET ARRAY LIKE 'groups_permissions.php','b.php','c.php','d.php'
            $egu_explode = explode(",", $id);
            $editgroup_users_array = "'" . implode ( "', '", $egu_explode ) . "'";

            // REPLACE FROM COLUMN
            $site_pages = $db_con->query("SELECT site_pages FROM settings LIMIT 1")->fetchColumn();
            $remove_page = str_replace([$editgroup_users_array], '', $site_pages);
            $remove_commas = preg_replace("/,+/", ",", $remove_page);
            $updated_pages = trim($remove_commas, ",");
echo $updated_pages;
问题: 上面的代码不替换任何字符串,并从
site\u pages
列中给出值,但如果我将
数组('groups\u permissions.php'、'b.php'、'c.php'、'd.php')
手动放置在
str\u replace
中,它将完全替换字符串。

$editgroup_users_array = "'" . implode ( "', '", $egu_explode ) . "'"; 

更新#1

最好直接做,

$remove_page = str_replace($id,'', $site_pages);
更新#2

如果要替换
groups\u permissions.php
b.php
c.php
d.php
,而不考虑它们的顺序,请按如下所示的数组传递它们

$remove_page = str_replace(array('groups_permissions.php','b.php','c.php','d.php'),'',$site_pages);
或者,在你的情况下,你最好这样做-

$remove_page = str_replace($egu_explode,'',$site_pages);

如果你使用这样的变量<代码> [$EddiGrpU.UsSersAlxAld] ,它会考虑它是一个数组,它会像下面的输出一样给出。

Array
(
    [0] => 'groups_permissions.php', 'b.php', 'c.php', 'd.php'
)
如果你像这样直接使用它:

str_replace(['groups_permissions.php', 'b.php', 'c.php', 'd.php'],'',$site_pages);
它会起作用的

因此,您的
str_replace
函数不应使用
[]
,因为它将字符串转换为数组。 因此,您只需删除括号
[]
,然后使用它

$remove_page = str_replace($editgroup_users_array, '', $site_pages);

如前所述,您应该简单地使用:

$remove_page = str_replace($id,'', $site_pages);

$site\u pages
包含哪些内容?你在
$site\u pages
中得到了什么?@vivek\u 23它包含
组权限。php,b.php,c.php,d.php
谢谢它的工作。你能详细说明一下为什么我不能在str\u replace中直接使用
$id
,而不是使用内爆吗?内爆在做什么?str_replace是如何替换由于多个值而没有任何数组的值的?@MR_AMDEV您代码中的问题是您在
内爆
中放置了不需要的单引号
。因此,PHP将
groups\u permissions.PHP、b.PHP、c.PHP、d.PHP
改为
'groups\u permissions.PHP'、'b.PHP'、'c.PHP'、'd.PHP'
。在str\u replace中使用数组(多个字符串)不是必需的吗?@MR\u AMDEV
[$editgroup\u users\u array]
技术上由数组中的
单个
元素组成,该元素具有
'groups\u permissions.php'、'b.php'、'c.php'、'd.php'
数组('groups\u permissions.php'、'b.php'、'c.php'、'd.php')在每个位置都有适当的字符串。因此,前一个不起作用,后一个起作用。嗯,谢谢,我真的不知道!谢谢你这么好的解释,我很感激。
$remove_page = str_replace($editgroup_users_array, '', $site_pages);
$remove_page = str_replace($id,'', $site_pages);