Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> разбор строки 
:(
    Опции темы
znr
Дата 19.3.2008, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 19.3.2008

Репутация: нет
Всего: нет



Всем привет, я понимаю вопрос простой, но все-же вынужден обратиться. Сколькими способами можно посчитать сколько точек в строке вида 3.2.1, при этом сначала надо проверить строку на корректность. Что она не вида .3..2.1. Т.е. конструкция 3.2.1 или 3.2 или 3.2.1.0 это строго. Т.е. чтобы точки не шли друг за другом и не было точек в начале или в конце строки. Заранее благодарен.
PM MAIL   Вверх
Feldmarschall
Дата 19.3.2008, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Что значит "сколькими способами"? способов бесконечное количество.
И нельзя ли приводить не абстрактную задачу про строки в вакууме, а реальную проблему, вызвавшую столь странный вопрос?
Заранее большое спасибо.

PM   Вверх
awers
Дата 19.3.2008, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



регулярным выражением (preg_math) проверить валидность а кол-во вхождений подстроки в строку substr_count

Добавлено через 43 секунды
Feldmarschall, ты чего это? ) вроде нормальный вопрос...
PM MAIL WWW ICQ Skype   Вверх
Feldmarschall
Дата 19.3.2008, 17:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



awers, опыт.
Напишешь человеку рег вида \d\., а он потом скажет, что могут быть не цифры - и так далее.
Всегда луше описывать реальную изначальную задачу, а не свои проблемы с её решением. Может, там точки вовсе считать не нужно на самом деле.
Не говоря уже о странной формулировке "сколько может быть способов".



PM   Вверх
awers
Дата 19.3.2008, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



В отношении "сколько может быть способов" - ты прав на все 100% )
 smile прекращаем 
PM MAIL WWW ICQ Skype   Вверх
Feldmarschall
Дата 19.3.2008, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



посимвольный парсинг, кстати - тоже вполне себе решение. проверка и подсчет в одном флаконе.
PM   Вверх
awers
Дата 19.3.2008, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



znr, решение то тебе полностью писать ненадо?
PM MAIL WWW ICQ Skype   Вверх
grimweb
  Дата 19.3.2008, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.3.2008

Репутация: нет
Всего: нет



Ну...вот решил сваять такой скрипт тебе в помощь... 
Не очень умело, зато с самыми лучшими побуждениями) smile
Короче, функцию в студию!!!  smile  smile  smile 
Код

<?php
$str = "3..5";
(string)$str; // приводим наше число к строковому типу, если оно к нему еще не приведено (в посте не было сказано, чтопредставляет из себя исходная переменная)
trim($str); // удаляем в строке все ведущие и заключительные пробелы
for($i = 2; $i < strlen($str); $i++) // пишем цикл, перебирающий все варианты, где точек больше, чем надо
{
if(strpos($str, str_repeat(".", $i)) == true)
{
die("Точек больше, чем надо..."); // выходим, если точек больше чем надо (больше 1)
}
}
if(strpos($str, ".") == true)
{
$s_c = substr_count($str, ".");
echo "Кол - во точек (".") в строке равно: $s_c";
}
else
{
echo "Точек не обнаружено :-(";
}
?>

PM MAIL   Вверх
awers
Дата 19.3.2008, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



grimweb, ойой ... ты чего ) этж регуляркой делать в добрый путь ) одна строка всего
PM MAIL WWW ICQ Skype   Вверх
grimweb
  Дата 19.3.2008, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.3.2008

Репутация: нет
Всего: нет



awers, это ты чего  smile :-((( Целый час писал) Если не трудно, обьясни пожалуйста, как так сделать и какой еще регуляркой?? Пожалйста подоходчивей, для меня это очень важно...

Добавлено через 2 минуты и 46 секунд
АнВерС!!!! Ты меня слышишь???)) Как сделать то?? А?
PM MAIL   Вверх
Canarat
Дата 19.3.2008, 20:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 11.3.2008
Где: Каспий

Репутация: 5
Всего: 5



grimweb, тут тебе не чат.
Код

<?php
$str="3.2.1.4.0"; $COUNT=0;
if(preg_match("/^\d+([\d\.]*)\d+$/",$str,$mt))
$COUNT=count(explode(".",$str))-1;
echo $COUNT;
?>

Что-нибудь в таком стиле.
PM MAIL   Вверх
grimweb
  Дата 19.3.2008, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.3.2008

Репутация: нет
Всего: нет



Цитата(Canarat @ 19.3.2008,  20:08)
grimweb, тут тебе не чат.
Код

<?php
$str="3.2.1.4.0"; $COUNT=0;
if(preg_match("/^\d+([\d\.]*)\d+$/",$str,$mt))
$COUNT=count(explode(".",$str))-1;
echo $COUNT;
?>

Что-нибудь в таком стиле.

Я знаю)
А за ответ спс огромное. в будущем учту!
PM MAIL   Вверх
Canarat
Дата 19.3.2008, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 11.3.2008
Где: Каспий

Репутация: 5
Всего: 5



Отметь тему решенной.
PM MAIL   Вверх
grimweb
Дата 19.3.2008, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.3.2008

Репутация: нет
Всего: нет



А... еще проверку на точку, идущую последней или первой в строке забыл... но какая теперь раздница... существует лучшее решение...
PM MAIL   Вверх
Canarat
Дата 19.3.2008, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 11.3.2008
Где: Каспий

Репутация: 5
Всего: 5



Код

<?php
$str="3.2.1.4.0"; $COUNT=0;
if(preg_match("/^(((\d+)\.)*)\d+$/",$str,$mt))
$COUNT=count(explode(".",$str))-1;
echo $COUNT;
?>

Вот лучший вариант.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1029 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.