Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Semrush - keyword research tool

Turn ChatGPT, Claude, Gemini, And CoPilot Into Your Personal Assistant, Business Coach, Content Creator, And More

AFFILIATE MARKETING Your all-in-one performance engine Manage affiliates, creators, and customer referrals in one unified platform—turning every partnership into measurable growth
Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

42,690 questions

55,449 answers

573 users

How to remove duplicate case‑insensitive words separated by multiple delimiters from a string in PHP

1 Answer

0 votes
/**
 * removeDuplicatesMultiDelimiterCI
 *
 * Case‑insensitive removal of duplicate items using multiple delimiters.
 * Uses preg_split to break the string by ANY delimiter, normalizes items
 * to lowercase for comparison, but preserves original casing in output.
 *
 * @param string $s            The input string.
 * @param array  $delimiters   List of delimiters, e.g. [",", "|", ";"]
 * @return string              Cleaned string with duplicates removed,
 *                             rejoined using the FIRST delimiter.
 */
function removeDuplicatesMultiDelimiterCI(string $s, array $delimiters): string
{
    // Escape delimiters for safe regex use
    $escaped = array_map('preg_quote', $delimiters);

    // Build regex: split on ANY delimiter (one or more occurrences)
    $pattern = '/[' . implode('', $escaped) . ']+/';

    // Split into parts, remove empty entries
    $parts = preg_split($pattern, $s, -1, PREG_SPLIT_NO_EMPTY);

    $seen = [];
    $unique = [];

    foreach ($parts as $item) {
        // Case‑insensitive key
        $key = strtolower($item);

        // Only add if not seen before
        if (!isset($seen[$key])) {
            $seen[$key] = true;
            $unique[] = $item;   // preserve original casing
        }
    }

    // Reassemble using the FIRST delimiter
    return implode($delimiters[0], $unique);
}

// Main
$s = "AAA|aaa,aAA;aaA|AAa,AAA;BBB|CCC,AAA;AAA,aaa|aaa,aaA|aAA";

// Run the function
$result = removeDuplicatesMultiDelimiterCI($s, [",", "|", ";"]);

echo $result;


/*
run:

AAA,BBB,CCC

*/

 



answered Aug 1 by avibootz

Related questions

...