#php
#php
Вопрос:
Я работаю с HTML-формой, затем отправляю ее в свой php-скрипт, где я должен проверить, является ли значение из html-формы десятичным. Если нет, php должен напечатать его с помощью echo с красным цветом шрифта и, если это правильно, со стандартным черным шрифтом..
Во-первых, я НЕ МОГУ использовать регулярное выражение, чтобы проверить, является ли оно формально действительным. Есть какие-нибудь подсказки?
Комментарии:
1. если регулярное выражение не может быть использовано, пожалуйста, удалите тег regex
2. Как насчет функции is_numeric() в PHP? php.net/manual/en/function.is-numeric.php
3. Что у вас есть до сих пор? Пожалуйста, добавьте свой код
4. Я попробую использовать ее для десятичной системы счисления. Но также у меня есть другие входные данные: «проверьте, является ли это троичным числом» и «ссылка на атрибут объекта c #»…
5. Итак, добавьте к вашему вопросу, тогда мы сможем вам помочь
Ответ №1:
Есть несколько способов, которыми это может быть достигнуто:
<?php
$values = [
'1',
'1.1',
'.11',
'foo'
];
foreach( $values as $value ){
if( $value > floor($value) ){
echo '<p>is decimal</p>';
}else{
echo '<p style="color:red">not decimal</p>';
}
}
echo '<hr>';
foreach( $values as $value ){
if( is_numeric($value) amp;amp; (1 === substr_count($value, '.')) ){
echo '<p>is decimal</p>';
}else{
echo '<p style="color:red">not decimal</p>';
}
}
Первый способ просто сравнивает значение с floor()
отредактированной версией самого себя.
В качестве альтернативы, проверяет, соответствует ли значение is_numeric()
, затем проверяет, имеет ли строка десятичную дробь.
Редактировать: Изменен второй метод с substr()
на substr_count()
, как предложил @ArtisticPhoenix, поскольку может быть возможность >= двух десятичных знаков.
Комментарии:
1. Может быть,
substr_count($value, '.') == 1
для второго вместо!(false === strpos($value,'.')
— я почти сделал ответ с ним, затем понял, что он слишком похож на второй. В любом случае кажется, чтоfalse !== strpos($value,'.')
было бы более читабельным.