Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как проверить строку на содержание только цифр
 
 автор: BlueWolf   (06.07.2010 в 14:38)   письмо автору
 
 

Как проверить строку в php на содержание только цифр, а если там имеется хотя бы один символ не от 0 до 9 то завершать программу

  Ответить  
 
 автор: neadekvat   (06.07.2010 в 14:46)   письмо автору
 
   для: BlueWolf   (06.07.2010 в 14:38)
 

<?php
if (!preg_match("/^\d+$/"$var))
die(
'Конец программы');

  Ответить  
 
 автор: psychomc   (06.07.2010 в 14:48)   письмо автору
 
   для: BlueWolf   (06.07.2010 в 14:38)
 


<?php
$str 
"12345";
if (!
preg_match("/^([0-9])+$/"$str)) {                                                
    echo 
"завершить программу";    
    exit();
}
echo 
"строка содержит только цифры";

  Ответить  
 
 автор: sl1p   (06.07.2010 в 16:00)   письмо автору
 
   для: BlueWolf   (06.07.2010 в 14:38)
 

или так, мб быстрее :)

<?
if(is_numeric($var) && str_pos($var'-') === false) {
    echo 
'в переменной только числа';
}

  Ответить  
 
 автор: Николай2357   (07.07.2010 в 10:16)   письмо автору
 
   для: sl1p   (06.07.2010 в 16:00)
 

str_pos() вообще то слитно пишется: strpos()
А по скорости вот так еще быстрее))
<?
if($var === abs((int)$var)){
    echo 
'в переменной только цифры';
}    

  Ответить  
 
 автор: psychomc   (08.07.2010 в 15:13)   письмо автору
 
   для: Николай2357   (07.07.2010 в 10:16)
 

вот так работать не будет

<?php
$var 
"12345";
if(
$var === abs((int)$var)){
    echo 
'в переменной только цифры';
}  

  Ответить  
 
 автор: Николай2357   (08.07.2010 в 23:32)   письмо автору
 
   для: psychomc   (08.07.2010 в 15:13)
 

>вот так работать не будет
Естественно. Разговор шел про цифры. Если нужно их строковое представление, строгое равенство следует заменить обычным.

  Ответить  
 
 автор: psychomc   (09.07.2010 в 12:48)   письмо автору
 
   для: Николай2357   (08.07.2010 в 23:32)
 

а кто сказал что разговор шел про цифры?
Тема: "Как проверить строку в php на содержание только цифр..."

  Ответить  
 
 автор: Trianon   (09.07.2010 в 02:01)   письмо автору
 
   для: Николай2357   (07.07.2010 в 10:16)
 

ой ли?
а если там символов 50?

  Ответить  
 
 автор: Tonik992   (09.07.2010 в 03:20)   письмо автору
 
   для: Trianon   (09.07.2010 в 02:01)
 


<?
$no 
"123";
if(
preg_match("/[^\d]{1}/",$no)){
    echo 
"Not a number";
    exit();
}


тоже работает. Хоть 100 цифр
А автор тему создал и в отпуск уехал видимо

  Ответить  
 
 автор: Trianon   (09.07.2010 в 05:50)   письмо автору
 
   для: Tonik992   (09.07.2010 в 03:20)
 

только это ничем не лучше ctype_digit

  Ответить  
 
 автор: Tonik992   (09.07.2010 в 11:51)   письмо автору
 
   для: Trianon   (09.07.2010 в 05:50)
 

Покажите исходник этой функции (тело её)

  Ответить  
 
 автор: Trianon   (09.07.2010 в 12:02)   письмо автору
 
   для: Tonik992   (09.07.2010 в 11:51)
 

Если вас интересуют исходники ядра php, то php - это open source project.
Полагаю, найдете, где искать.

  Ответить  
 
 автор: Tonik992   (09.07.2010 в 12:08)   письмо автору
 
   для: Trianon   (09.07.2010 в 12:02)
 

Чем все-таки мой вариант не лучше ctype_digit ?

  Ответить  
 
 автор: Trianon   (09.07.2010 в 13:22)   письмо автору
 
   для: Tonik992   (09.07.2010 в 12:08)
 

тем, что применяет существенно более сложные инструменты и ресурсы.
ctype_digit почти наверняка определена как-то так:
int ctype_digit(string s)
{
 char *p = s.located;  
  for(int c, i = 0, n = s.length; i < n; i++)
    if((с = *p++) < '0' || c > '9')
      return false;
  return true;
}

  Ответить  
 
 автор: Саня   (08.07.2010 в 15:28)   письмо автору
 
   для: sl1p   (06.07.2010 в 16:00)
 

А где проверка на "e", "E", "x", "X" и "."?

  Ответить  
 
 автор: Саня   (08.07.2010 в 15:27)   письмо автору
 
   для: BlueWolf   (06.07.2010 в 14:38)
 

ctype_digit()

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования