2017-12-21 8 views
0

Ich habe Zeichenfolge wie $text = '1234567812349101'; Ich möchte die wiederholten Buchstaben ausgeben und wie oft sie wiederholt werden. Zum Beispiel sollte das erwartete Ergebnis sein This string 1234 is repeated. Repeated 1 times.Wie gebe ich einen doppelten Buchstaben in einer Zeichenkette aus?

Ich habe versucht:

$text = '1234567812349101'; 

$disp = str_split($text, 4); 

foreach ($disp as $char) { 

    if (preg_match('/(.{4,})\\1{2,}/', $char)) { 
     echo "This string $char is repeated. Repeated times."; 
    } 
} 

Aber es gibt keinen Ausgang.

Wie kann ich das tun?

+4

die Vorkommen Sie helfen sein müssen gleichmäßig in nicht- überlappende 4-Character Chunks? h. sollte die Zeichenfolge "123451234" sich wiederholende Zeichen anzeigen? – iainn

Antwort

3

Versuchen Sie es mit array_count_values:

$text = '1234567812349101'; 

$disp = str_split($text, 4); 

$dupes = array_filter(array_count_values($disp), function ($el) { 
    return ($el > 1); 
}); 

foreach ($dupes as $dupe => $times) { 
    echo "This string $dupe is repeated. Repeated " . ($times - 1) . " times.\n"; 
} 

Ausgang:

This string 1234 is repeated. Repeated 1 times. 

eval.in demo

+0

@David Es ist ziemlich nett, aber kann ich das ohne Funktion tun und meinen Code bearbeiten? $ text = '1234567812349101'; $ disp = str_split ($ text, 4); foreach ($ disp als $ char) { // Leistungscode hier – solink

0
$text = '1234567812349101'; 

    $disp = str_split($text, 4); 
    $count = 0; 
    foreach($disp as $char){ 

     if(strcmp("1234",$char)){ 
      $count++; 
     } 
    } 
    $cnt = $count-1; 
    if($cnt > 1){ 
    echo "1234 String is repeated. Repeated ".$cnt."times"; 
    } 

I Diese hoffen, dass Sie :)

+0

Ja, aber Sie wollen 1234 vergleichen ?? oder irgendeine Zeichenfolge von dieser Zeichenfolge? –

+0

@solink Wenn Sie es dynamischer machen dann 'foreach ($ disp wie $ char) { if (strcmp ($ disp [0], $ char)) { $ count ++; } } $ cnt = $ count-1; if ($ cnt> 1) { echo "1234 String wird wiederholt. Wiederholt". $ Cnt. "Times"; } ' –

Verwandte Themen