PHP - 检查字符串是否包含相同的字符

时间:2017-03-24 03:35:37

标签: php string

我想检查一个字符串是否包含相同的字符,例如,如果我的字符串是'aaaaaa''bbbb''*****',它必须返回true或者如果它包含'aaab''**%***'它必须返回false,如何在PHP中进行此操作?

PS:有没有办法在没有RegEx的情况下做到这一点?

7 个答案:

答案 0 :(得分:6)

您可以在每个字符上split,然后count数组中的唯一值。

<?php
if(count(array_count_values(str_split('abaaaa'))) == 1) {
    echo 'True';
} else {
    echo 'false';
}

演示:https://eval.in/760293

答案 1 :(得分:5)

count(array_unique(explode('', string)) == 1) ? true : false;

答案 2 :(得分:3)

您可以使用带有反向引用的正则表达式:

if (preg_match('/^(.)\1*$/', $string) {
    echo "Same characters";
}

或简单循环:

$same = true;
$firstchar = $string[0];
for ($i = 1; $i < strlen($string); $i++) {
    if ($string[$i] != $firstchar) {
        $same = false;
        break;
    }
}

答案 3 :(得分:1)

希望这会奏效。

正则表达式:^(.)\1{1,}

^:字符串

的开头

(.):匹配并捕获单个被追踪者。

\1{1,}:使用捕获的角色一次或多次。

For this you can use regex

PHP code demo

$string="bbbb";
if($length=strlen($string))
{
    substr_count($string,$string[0]);
    if($length==substr_count($string,$string[0]))
    {
        echo "Do something";
    }
}

答案 4 :(得分:1)

strlen(str_replace($string[0], '', $string)) ? false : true;

答案 5 :(得分:1)

为了它的乐趣:

<?php

function str2Dec($string) {
    $hexstr = unpack('H*', $string);
    $hex = array_shift($hexstr);

    return hexdec($hex);
}

function isBoring($string) {
    return str2Dec($string) % str2Dec(substr($string, 0, 1)) === 0;
}

$string1 = 'tttttt';
$string2 = 'ttattt';

var_dump(isBoring($string1)); // => true
var_dump(isBoring($string2)); // => false

显然这仅适用于小字符串,因为一旦它变得足够大,INT就会溢出,而mod将不会产生正确的值。所以,不要使用这个:) - 发布它只是为了显示与通常的不同的想法。

答案 6 :(得分:1)

令我惊讶的是,所有其他答案都在努力工作。有些人正在将字符串转换为数组,使用正则表达式,循环和编写自定义函数来替换字符。

这就是所有需要做的事情,两个字符串函数:

$string='aaaba';
var_export(strlen(count_chars($string,3))>1?false:true);
// false

这两个函数(count_chars()strlen())就是为此而设计的。