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);