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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: выдернуть из строки названия месяцев

Сообщения:  [1-10] 

 
 автор: Trianon   (12.09.2007 в 13:35)   письмо автору
 
   для: larush   (12.09.2007 в 11:11)
 


<?php

$quote 
"оплата за то-то и то-то за май, апрель .... по счету №....";


$p "/(январь|февраль|март|апрель|май|июнь|июль|"
     
"август|сентябрь|октябрь|ноябрь|декабрь)/";
preg_match_all($p$quote$res);
print_r($res);


?>

   
 
 автор: larush   (12.09.2007 в 13:16)   письмо автору
 
   для: Indemion   (12.09.2007 в 12:11)
 

да, наверное так и надо. Спасибо за помощь !

   
 
 автор: Indemion   (12.09.2007 в 12:11)   письмо автору
 
   для: larush   (12.09.2007 в 12:01)
 

C "май" так не прокатит. Как вариант поместить в массиве еще 12 месяцев с окончанием "е" и расширить цикл до 23.
Плюс надо учитывать, чтобы в "то-то и то-то" не было слова или части слова в котором содержится название месяца.
Можно сделать такую проверку:
<?php
if (substr_count($line,$month[$i]) > 1) echo "Внимание, месяц: ".$month[$i]." встречается несколько раз!<br />";
?>

   
 
 автор: larush   (12.09.2007 в 12:01)   письмо автору
 
   для: larush   (12.09.2007 в 11:33)
 

я не стал заморачиваться с регистрами, а стоит.. использую ваш совет

$str=array();

$q_d = "select * from rashod";
$r_d = mysql_query($q_d);

$month[1]='январ;
...
$month[12]='деабр';

while ($z=mysql_fetch_array($r_d))
{
  $str="";
  for ($i = 1; $i <=count($month); $i++)
  {
    if(strpos($z['rs_prim'],$month[$i]))
    {
    $str[]= $month[$i];
    }
  }

//и вот в массиве названия месяцев по данной строке поиска $str[]
}


стал анализировать и столкнулся вот с чем- в некоторых счетах написано не за июнь, а "в июне".. пришлось обрезать Ь во всех месяцах :-)

   
 
 автор: Indemion   (12.09.2007 в 11:42)   письмо автору
 
   для: larush   (12.09.2007 в 11:33)
 

<?php
$month 
= array("январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь");
$line "оплата за то-то и то-то за мАй, апрEль .... по счету №....";
$line strtolower($line); #переводим данные в нижний регистр
for ($i=0$i <= 11$i++)
    {
    if (
substr_count($line,$month[$i]) == 1) echo "оплата произведена за: ".$month[$i]."<br />";
    }
?>

Если подумать, то можно и элегантнее сделать :)

   
 
 автор: larush   (12.09.2007 в 11:33)   письмо автору
 
   для: Indemion   (12.09.2007 в 11:30)
 

плавающее...я могу предположить что в строке надо искать через strpos() "январь", "Январь","февраль","Февраль"и т.д... но это решение в лоб, а ниче более изящного нету ?

   
 
 автор: Indemion   (12.09.2007 в 11:30)   письмо автору
 
   для: larush   (12.09.2007 в 11:27)
 

То есть в примечании не один месяц указывается, а два и более? Или это значение плавающее?

   
 
 автор: larush   (12.09.2007 в 11:27)   письмо автору
 
   для: cheops   (12.09.2007 в 11:22)
 

именно месяца, чтобы автоматом проставить что за такие-то месяца по таким-то контрагентам проплаты прошли. Просто бывает что платим раз в квартал, а то и в пологода (в зависимости от договора, приложений к нему),причем сумма за первый квартал может отличаться от суммы за второй. Но данных о том какие изменения в договорах, в базе нету, вот и работаем задним числом - если в примечании написаны 3 месяца, то и сумму делим на 3 и делаем пометки...

   
 
 автор: cheops   (12.09.2007 в 11:22)   письмо автору
 
   для: larush   (12.09.2007 в 11:11)
 

Не очень понятно, вам только названия месяцев нужны или дата?

   
 
 автор: larush   (12.09.2007 в 11:11)   письмо автору
 
 

привет всем
есть строка примечания к оплаченому счету
"оплата за то-то и то-то за май, апрель .... по счету №...."
как оптимально из нее выдернуть (сформировать массив) месяцев, по которвым была произведена оплата в данном счете ?
Спасибо!

   

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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