sql >> Database >  >> RDS >> Mysql

Hoe vervang ik een string door een andere string en bewaar de case in php en mysql?

Ik heb een functie gemaakt die het woord voor je zal vervangen en de hoofdletters zal behouden.

function replaceWithCase($source, $replacement, $string) {
    // Does the string contain the source word?
    if (strpos($string, $source) === false) {
        return false;
    }

    // If everything is uppercase, return the replacement fully uppercase
    if (ctype_upper($source)) {
        return str_replace($source, strtoupper($replacement));
    }

    // Set an array to work with
    $characters = array();

    // Split the source into characters
    $sourceParts = explode('', $source);

    // Loop throug the characters and set the case
    foreach ($sourceParts as $k => $sp) {
        if (ctype_upper($sp)) {
            $characters[$k] = true;
        } else {
            $characters[$k] = false;
        }
    }

    // Split the replacement into characters
    $replacementParts = explode('', $replacement);

    // Loop through characters and compare their case type
    foreach ($replacementParts as $k => $rp) {
        if (array_key_exists($k, $characters) && $characters[$k] === true) {
            $newWord[] = strtoupper($rp);
        } else {
            $newWord[] = strtolower($rp);
        }
    }

    return substr_replace($source, implode('', $newWord), $string);
}

// usage
echo replaceWithCase('AppLes', 'bananas', 'Comparing AppLes to pears');

Opmerking:het is niet getest en moet mogelijk worden aangepast



  1. NVL2-functie in Oracle

  2. spring jpa application.properties useSSL

  3. Hoe maak je deze eav-query om een ​​horizontaal resultaat te maken?

  4. MySQL verwijdert alle rijen waar id groter is dan het opgegeven getal