如何在 str_split 字符串行中取消设置重复字符串

How do i unset duplicate string in a str_split string line

如何检查同一字符串是否出现两次或多次并将其删除。例如拆分字符串是 123 456 123 789,我希望能够取消设置拆分字符串行中的重复字符 例如,我的预期输出应该像 web123 web456 web789。这是我尝试过的:

<?php

$str = "jmja12345jmja612378911";
$int = filter_var($str, FILTER_SANITIZE_NUMBER_INT);
$disp = str_split($int, 3);
foreach($disp as $char){
    if(strlen($char) == "3") 
    {
        $net = substr($char,1,2);
        if(preg_match('/(50|30)/i', $net))
        {
            echo "our computer can not edit $net";
            exit();
        }
        else
        {
            $pd = str_replace("$net","web$net",$net);
            $str = implode(array_unique(explode( $pd)));
            echo $str;
        }
    }
}

但是我没有得到好的结果。我究竟做错了什么?在 https://ideone.com/fork/rGyH41

查看

如果您只需要删除重复值。为什么你不直接这样试试呢。

<?php

$str = "jmja12345jmja612378911";
$int = filter_var($str, FILTER_SANITIZE_NUMBER_INT);
$disp = str_split($int, 3);
$arr = array_unique($disp);
var_dump($arr);

并为您的功能工作。试试这个

$str = "jmja12345jmja612378911";
$int = filter_var($str, FILTER_SANITIZE_NUMBER_INT);
$disp = str_split($int, 3);
foreach($disp as $char){
    if(strlen($char) == "3") 
    {
        $net = substr($char,1,2);
        if(preg_match('/(50|30)/i', $net))
        {
            echo "our computer can not edit $net";
            exit();
        }
        else
        {
            $pd[] = str_replace("$net","web$net",$net);
        }
    }
}

$array = array_values(array_unique($pd));
var_dump($array);
$str = implode(array_unique($pd));
echo $str;

据我了解,您正试图从字符串中删除所有非数字字符并获得一个不重复数值的数组。 这是一个简单的方法。

$str = "jmja12345jmja612378911";
$onlyNumbers = preg_replace("/[^0-9,.]/", "", $str);

$array = str_split($onlyNumbers,3);
$arrayWithoutRepetition = array_unique($array);
print_r($arrayWithoutRepetition);

希望这能解决您的问题。