Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.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字符串-使用字符串中的模式分解为数组_Php_String_Preg Replace - Fatal编程技术网

Php字符串-使用字符串中的模式分解为数组

Php字符串-使用字符串中的模式分解为数组,php,string,preg-replace,Php,String,Preg Replace,我有一个类似这样的字符串: $string = "Item 1|Item 2|Item 3|Item 4|Item 5" 迭代此字符串并删除重复项的最佳方法是什么。例如,它知道要比较的代码的每一部分都在“|”字符之间 它将选择Item1和preg\u replace()字符串的其余部分。然后它将查看下一项(Item2)和preg\u replace()字符串的其余部分 棘手的部分是如果项目1==项目2。然后,算法将替换项目2,项目3将是下一个要查看的项目 我试过几种方法,但都不管用。有什么想法

我有一个类似这样的字符串:

$string = "Item 1|Item 2|Item 3|Item 4|Item 5"
迭代此字符串并删除重复项的最佳方法是什么。例如,它知道要比较的代码的每一部分都在“|”字符之间

它将选择Item1和
preg\u replace()
字符串的其余部分。然后它将查看下一项(Item2)和
preg\u replace()
字符串的其余部分

棘手的部分是如果
项目1==项目2
。然后,算法将替换项目2,项目3将是下一个要查看的项目


我试过几种方法,但都不管用。有什么想法吗?谢谢

如果我理解正确,忽略所有关于
preg\u replace()
的内容,如果您只是想删除重复项,那么使用一些数组操作

explode()。使用
array\u unique()
内爆()
将其过滤回管道分隔字符串:

$array = explode("|", "Item 1|Item 2|Item 3|Item 4|Item 5");
$unique = array_unique($array);
implode("|", $unique);

伟大的我会很难为情地展示我是如何试图做到这一点的。非常感谢@PirstinedDesign:那么,你在这里做preg_替换吗?我本来打算使用preg_替换(),但是explode introde方法看起来更优雅、更高效。
$items = explode('|',$string);
$unique_items = array_unique($items);
$unique_string = implode('|', $unique_items);