Ganz einfach. Dadurch das Sonder-, Satz- und Leerzeichen jeweils durch ein ‚_‘ ersetzt werden, kann es vorkommen, das mehrere dieser hintereinander stehen. So wird aus „Achtung: Dies ist ein Beispiel“ ganz schnell „Achtung__dies_ist_ein_Beispiel“.

Und schon haben sich nach dem Wort „Achtung“ gleich zwei ‚_‘ eingeschlichen, was einmal unschön aussieht, und zum Zweiten auch schwer zu merken ist, denn wer weiß schon, das da vorher noch ein Doppelpunkt dabei stand. Also, solche Vorkommen müssen demnach reduziert werden.

Um dies zu bewerkstelligen hilft eine kleine Funktion weiter.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
/**
 * mehrfach wiederholende Zeichen aus einem String entfernen
 *
 * @param string $string Zu bearbeitender String
 * @param string $chars Zeichen die beachtet werden sollen
 * @param int $maxRepeats
 * @return string
 */

function manyToOne($string, $chars, $maxRepeats) {
    $patternParts = array();

    foreach (str_split($chars) as $char) {
        $patternParts[] = sprintf('%s{%d,}', $char, $maxRepeats);
    }

    $string = preg_replace_callback(
        sprintf('/%s/i', join('|', $patternParts)),
        create_function('$matches', 'return $matches[0][0];'),
        $string
    );

    return $string;
}

/**
 * Benutzung dieser Funktion
 */


/**
 * Aus diesem Beispiel sollen alle mehrfach vorkommenden '_'
 * zu jeweils nur einem zusammengefasst werden
 */

$string     = 'Achtung__Dies_ist_ein_Beispiel';
$string     = manyToOne($string, '_', 1);

/**
 * Ausgabe: "Achtung_Dies_ist_ein_Beispiel"
 */

echo $string;
?>
Artikel / Seite weiterempfehlen

Eine Meinung zu “Gleiche aufeinander folgende Zeichen reduzieren

Schreibe einen Kommentar

Ihre Email-Adresse wird nicht veröffentlicht. Pflichtfelder sind durch * markiert.

Sie können folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>