php - 检查字符串中的字符串字符
问题描述
获取一个可以包含个位数、字母和问号的输入字符串(通过表单发布),并检查每对加起来为 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
解决方案
从您在代码中的评论中,我了解到您正在尝试爆炸“,”。这与逻辑的任何部分都无关。您可能需要分解以根据“??”拆分字符串。要在添加之前提取这对数字,有一些预定义的方法,例如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";
?>
推荐阅读
- wordpress - CF7 下拉菜单上的 OnChange 事件 [选择]
- mysql - 我们 DBA 对 MySQL 和 TiDB 的性能测试表明,独立的 TiDB 的性能不如 MySQL
- c# - 如何在 C# 中对 TextBox 进行约束?
- javascript - 如何将工具提示添加到锚点
- mysql - 我们应该在 MySQL 中动态创建的表中拆分数据还是与其他 DBMS 一起使用?
- c# - C#:在字符串列表中获取双重条目
- java - OncreateView 中出现意外的 NPE
- reactjs - 反应,打字稿文档
- ios - 处理多个 UICollectionView 的 interactiveMovements - 崩溃:UIDragSnappingFeedbackGenerator 已经在与之交互
- php - Ubuntu中的数据库错误