2013-06-18 118 views
-2

如何檢查字符串中的所有字符是否相同,或換句話說字符串中是否至少有兩個不同的字符?如何檢查字符串中的所有字符是否相同?


這是我的非工作的嘗試:

<?php 
$isSame = False; 
$word = '1111';//in any language 
$word_arr = array(); 
for ($i=0;$i<strlen($word);$i++) { 
    $word_arr[] = $word[$i]; 
    if($word_arr[$i] == $word[$i]) $isSame = True; 
} 
var_dump($isSame); 
?> 
+0

請確保您的代碼是可讀的形式 – dotINSolution

+3

「相同的單詞字符」沒有多大意義,因爲一個題。請嘗試解釋更多你想要做的事情。 – deceze

+2

RTLM:http://php.net/explode http://php.net/array_count_values –

回答

6

我想你是想看看一個單詞是否只是一個字符的重複(即它只有一個不同的字符)。

您可以使用一個簡單的正則表達式:

$word = '11111'; 
if (preg_match('/^(.)\1*$/', $word)) { 
    echo "Warning: $word has only one different character"; 
} 

解釋的正則表達式:

^ => start of line (to be sure that the regex does not match 
     just an internal substring) 
(.) => get the first character of the string in backreference \1 
\1* => next characters should be a repetition of the first 
     character (the captured \1) 
$ => end of line (see start of line annotation) 

因此,簡而言之,請確保該字符串只有第一個字符的重複和沒有其他人物。

+0

謝謝。我想了。 – amature

+0

這個正則表達式不支持俄語或阿拉伯語等語言! – amature

+0

@amature如果字符串是UTF8編碼,請使用['u'](http://php.net/reference.pcre.pattern.modifiers)('PCRE_UTF8')模式修飾符([docs](http:// php.net/reference.pcre.pattern.modifiers))。 – salathe

2

使用count_chars你串1或3 如果字符串包含一個重複的字符,例如第二個參數:

$word = '1111'; 

// first check with parameter = 1 
$res = count_chars($word, 1); 
var_dump($res); 
// $res will be one element array, you can check it by count/sizeof 

// second check with parameter = 3 
$res = count_chars($word, 3); 
var_dump($res); 
// $res will be string which consists of 1 character, you can check it by strlen 
0

看起來像要檢查是否所有的字符都是相同

<?php 
$isSame = True; 
$word = '1111'; 
$first=$word[0]; 
for ($i=1;$i<strlen($word);$i++) { 
    if($word[$i]!=$first) $isSame = False; 
} 
var_dump($isSame); 
?> 

PHPFiddle

相關問題