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

Форум Регулярные Выражения

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

 

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

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

тема: регулярка
 
 автор: bobo   (27.11.2009 в 19:56)   письмо автору
 
 

помогите составить регулярку вида
текст(тут только русские буквы)_одна буква(русская буква большая).одна буква(русская буква большая ).
пробовал так не выходит
preg_match("/^[а-я]{1,20}_([А-Я]{1}\.[А-Я]{1}\.)$/m");

  Ответить  
 
 автор: Саня   (27.11.2009 в 21:54)   письмо автору
 
   для: bobo   (27.11.2009 в 19:56)
 

Покажите строку, к которой вы применяете это регулярное выражение.

  Ответить  
 
 автор: bobo   (27.11.2009 в 22:02)   письмо автору
 
   для: Саня   (27.11.2009 в 21:54)
 

антонов_А.А.
все буквы русские

  Ответить  
 
 автор: Саня   (27.11.2009 в 22:19)   письмо автору
 
   для: bobo   (27.11.2009 в 22:02)
 

Эта строка как раз подходит под указанное вами выражение.
<?
var_dump
(preg_match("/^[а-я]{1,20}_([А-Я]{1}\.[А-Я]{1}\.)$/m"'ппп_А.А.')); // int(1)

Может в вашей исходной строке в начале или конце есть пробелы?

  Ответить  
 
 автор: bobo   (27.11.2009 в 22:25)   письмо автору
 
   для: Саня   (27.11.2009 в 22:19)
 

я сначала делаю trim , а потом проверяю, может с кодировкой проблемы?

  Ответить  
 
 автор: Саня   (27.11.2009 в 22:27)   письмо автору
 
   для: bobo   (27.11.2009 в 22:25)
 

Может.

  Ответить  
 
 автор: bobo   (27.11.2009 в 22:29)   письмо автору
 
   для: Саня   (27.11.2009 в 22:27)
 

но я прописывал windows 1251, делал все возможное с кодировкой и ничего не помогает.

  Ответить  
 
 автор: Саня   (27.11.2009 в 22:38)   письмо автору
 
   для: bobo   (27.11.2009 в 22:29)
 

Какая исходная кодировка текста?

  Ответить  
 
 автор: bobo   (27.11.2009 в 22:39)   письмо автору
 
   для: Саня   (27.11.2009 в 22:38)
 

та черт его знает, у меня denwer стоит, а как узнать?

  Ответить  
 
 автор: /|\';..;'/|\   (27.11.2009 в 22:40)   письмо автору
 
   для: bobo   (27.11.2009 в 19:56)
 

Прикрепите файл с кодом.

  Ответить  
 
 автор: bobo   (27.11.2009 в 22:46)   письмо автору
 
   для: /|\';..;'/|\   (27.11.2009 в 22:40)
 

сама функция проверки
function fio($FIO) 
        {
            if (!preg_match("/^[а-я]{1,20}_([А-Я]{1}\.[А-Я]{1}\.)$/m",$FIO))
                {
                    echo '<center>Введите корректно Ф.И.О., вводить согласно шаблону <b>Фамилия_И.О.</b><br/>';
                    echo '<a href="javascript:history.go(-1);">Назад</a></center>';
                    exit;
                }
        }

сам код где ввожу данные
<?
//setlocale(LC_ALL, array('ru_RU.1251', 'rus_RUS.1251', 'Russian_Russia.1251'));
//header("Content-type:text/html;charset=windows-1251");
if(!isset($_POST['add_al']))
  {
    
?>
    <form action="" method="POST">
    <center>
    <table border="1" cellspacing="0" cellpadding="5">
      <tr>
        <td colspan="2" align="center"><b>Введите данные</b></td>
      </tr>
      <tr>
        <td height="13" colspan="2" align="center"><font color="red">Все поля обязательны к заполнению</font></td>
      </tr>
            <?
            
include_once("tmp/function.php");
            
makes('ФИО','FIO');
      
makes('C++','cpp');
      
makes('ООП','oop');
      
makes('АЭВМ','aevm');
      
makes('БД','bd');
      
makes('МАН','man');
            
?>
    </table></br>
    <input style="background: url(tmp/png/add.png) no-repeat left;" name="add_al" type="submit" value="   Добавить альтернативу">
    </form>
    <br/><br/>
    <a href=mas.php>Назад</a>
    </center>
    <?
  
}
  
else 
  {    
        
$FIO=ucfirst(trim($_POST['FIO']));
    include_once(
"tmp/function.php");
    
fio($FIO);
    
//$FIO=trim(preg_replace("/\s/","_",$_POST['FIO']));
    
$cpp=trim($_POST['cpp']);
    
$oop=trim($_POST['oop']);
    
$aevm=trim($_POST['aevm']);
    
$bd=trim($_POST['bd']);
    
$man=trim($_POST['man']);
         include_once(
"tmp/function.php");
     
datas($cpp);
     
datas($oop);
     
datas($aevm);
     
datas($bd);
     
datas($man);
         
    
$cpp=(int)$cpp;
    
$oop=(int)$oop;
    
$aevm=(int)$aevm;
    
$bd=(int)$bd;
    
$man=(int)$man;
        
    if(!empty(
$_POST['FIO']) && isset($_POST['cpp']) && isset($_POST['oop']) && isset($_POST['aevm']) && isset($_POST['bd']) && isset($_POST['man']))
      {
        
        
$src fopen('tmp/1.txt',"r"); 
        while ( !
feof($src) ) 
         {
          
$mas[] = fgets($src,464564);  
         }
        
$t=sizeof($mas);
        
fclose($src);
        
        
$h fopen("tmp/1.txt","a+");
        
$text "$FIO C$t $cpp $oop $aevm $bd $man ";
        if (
fwrite($h,"\n$text")) 
          {
            
?><meta http-equiv='refresh' content='2; url=mas.php'><center><H3>Добавление произведено</H3></center><?
          
}
        else
          { 
            
?><meta http-equiv='refresh' content='2; url=mas.php'><center><H3>Добавление не произведено</H3></center><?
          
}
        
fclose($h);

      }
      
    else
    {
      
?><meta http-equiv='refresh' content='2; url=mas_add.php'><center><H3>Введены не все данные</H3></center><?
    
}
  }
?>

  Ответить  
 
 автор: /|\';..;'/|\   (27.11.2009 в 22:49)   письмо автору
 
   для: bobo   (27.11.2009 в 22:46)
 

> $FIO=ucfirst(trim($_POST['FIO']));
Тут проблема. Сами догадаетесь или подсказать?

  Ответить  
 
 автор: bobo   (27.11.2009 в 22:52)   письмо автору
 
   для: /|\';..;'/|\   (27.11.2009 в 22:49)
 

подскажите

  Ответить  
 
 автор: /|\';..;'/|\   (27.11.2009 в 22:54)   письмо автору
 
   для: bobo   (27.11.2009 в 22:52)
 

ucfirst() переводит первый символ строки в верхний регистр. Ваше регулярное выражение не учитывает этого.

  Ответить  
 
 автор: bobo   (27.11.2009 в 22:56)   письмо автору
 
   для: /|\';..;'/|\   (27.11.2009 в 22:54)
 

спасибо большое за участие, по своей глупости долго искал ошибку.

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

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