首页 > 解决方案 > 检查字符串中的字符串字符

问题描述

获取一个可以包含个位数、字母和问号的输入字符串(通过表单发布),并检查每对加起来为 12 的两个数字之间是否正好有 2 个问号。如果是,则返回“是",否则应返回“否”。如果字符串中没有任何两个数字加起来等于 12,则返回“No”。

例如:如果 str 是“arrb7??5xxbl8??eee4”,那么您的程序应该返回 true,因为字符串末尾正好有 2 个问号介于 7 和 5 之间,以及 2 个问号介于 8 和 4 之间。

enter code here

<?php 
    $value = $_POST['temp'];
    $len = strlen($value);
    // $splt = explode(",",$value);  
    

    // var_dump($splt);
    // foreach($splt as $result)
    // {
    //     echo $result ."<br>";
    // }
    $i=0; 
    strpos($value[i]);
    if(is_numeric($value)&& $len < 12)
    {
        echo  $value;

    }    

    else
    {
           echo 'no';
    }


//  $temp = explode($value);
    // if($value == )
    // is_numeric($value);
enter code here

标签: phpstringweb

解决方案


从您在代码中的评论中,我了解到您正在尝试爆炸“,”。这与逻辑的任何部分都无关。您可能需要分解以根据“??”拆分字符串。要在添加之前提取这对数字,有一些预定义的方法,例如preg_match_all(). filter_var(), 很快。这是一个工作示例:

<?php
$string = 'arrb7??5xxbl8??eee4';
$terms = explode("??",$string);
$success = true;
for ($counter=1; $counter < count($terms); $counter+=1) {
  $num1 = ((int) filter_var($terms[$counter-1], FILTER_SANITIZE_NUMBER_INT)) % 10;
  $num2 = ((int) filter_var($terms[$counter], FILTER_SANITIZE_NUMBER_INT));
  $sum = $num1+((string)($num2))[0];
  if ($sum != 12)
  {
    $success = false;
    break;
  }
}
echo $success ? "Yes" : "No";
?>

推荐阅读