【问题标题】:How to check if string contains just 1 same number [duplicate]如何检查字符串是否仅包含1个相同的数字[重复]
【发布时间】:2013-03-11 16:03:37
【问题描述】:

我有一个回电表格,它会向我发送一个想要回电的人的电话号码。今天我收到了“88888888”的表格,而不是真实的电话号码。

如何检查字符串是否包含 1 和相同的数字,连续? 连续的相同数字不得超过 4 个。

【问题讨论】:

  • 这会激怒任何人,因为无论出于何种原因,拥有一个合法的数字,并且有 4 个连续的相同数字。对发给你 88888888 的人来说,这将无济于事;下次他们会发送 12345678。
  • 假设您要验证北美电话号码:see this answer
  • 不要尝试验证电话号码,就像永远不要尝试验证姓名一样。也就是说,/^(\d)\1+$/
  • @couzzi 实际上我正在尝试检查荷兰电话号码:)。我并不是要完全验证它,只是检查它是否只有1个数字,它是连续的(8888888888或5555555555、444444444等)
  • 请重新考虑这个问题的重复状态:The answer noted above 有匹配 连续 个字符的解决方案,无论字符串的开头还是结尾。 OP 寻求一种解决方案来确定字符串是否包含一个排他字符重复。例如,The suggested answer 会因 88888889 等而失败。

标签: php string phone-number


【解决方案1】:

要检查字符串是否只包含一个重复的整数,字符串->数组,检查唯一计数是否为1。

<?php

$string  = "88888888"; 

$array = array_unique( str_split( $string ) );

$result = $array;

if( count($result) === 1 ) {
    echo "Same number repeated in string";
}else{
    echo "More than 1 number found in string";
}

?>

-编辑-

优化:由于@Uberfuzzy 的评论,删除了for 循环

【讨论】:

  • 您可以使用str_split 终止您的for 循环。 $array = array_unique( str_split( $string ) );
  • @Uberfuzzy - 谢谢,已修复。
  • 这对我很有用,谢谢!您还可以杀死 $length 变量(我假设它在被删除的 for 循环中使用)。
【解决方案2】:
$number_string = (string)$number_string;
return strlen($number_string) > 0 && str_repeat($number_string[0], strlen($number_string)) === $number_string;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多