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

Форум PHP

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

 

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

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

тема: проверка строки на символы
 
 автор: freeing   (09.02.2010 в 15:53)   письмо автору
 
 

подскажите, я запутался ((

мне необходимо проверить есть ли в строке недопустимые символы,
делаю так:


<?php

     $Array 
= Array
     (
          
"a""b""c""d""e""f""g""h""i""j""k""l""m",
          
"n""o""p""q""r""s""t""u""v""w""x""y""z",
          
"1""2""3""4""5""6""7""8""9""0"
     
);

     
$stryng "sdfgsdfgsdfgdr$tgd sdfgsyt";

     for(
$i=0$i strlen($stryng); $i++)
     {
          foreach(
$Array as $val)
          {
               if(
$stryng[$i] == $val)
               {
                    print 
"true";
               }
               else
               {
                    print 
"false";
               }
          }
     }
?>



если в строке есть хоть один из запрещенный символов, вывести false
если в строке только те символы что в массиве, вывести true


спасибо!

  Ответить  
 
 автор: Trianon   (09.02.2010 в 16:07)   письмо автору
 
   для: freeing   (09.02.2010 в 15:53)
 

<? 
print preg_match('/^[a-z0-9]*$/'$stryyyyyng) ? "true" "false";

  Ответить  
 
 автор: freeing   (09.02.2010 в 17:57)   письмо автору
 
   для: Trianon   (09.02.2010 в 16:07)
 

массив динамический, только перебором (

  Ответить  
 
 автор: Trianon   (09.02.2010 в 20:32)   письмо автору
 
   для: freeing   (09.02.2010 в 17:57)
 

и что, что динамический? preg_match - статический чтоли?
implode() и preg_quote() никто не отменял.

  Ответить  
 
 автор: .heed   (09.02.2010 в 21:28)
 
   для: freeing   (09.02.2010 в 17:57)
 

как вариант можно создать ещё один массив с нужными значениями, и сравнить размер с размером исходного или просто сравнить массивы
$array_2 = preg_grep('/^[0-9a-z]$/', $array);
или проверить на заполненность массив с ненужными строками '/^[^0-9a-z]$/'
или preg_replace(_callback) работают с массивами

  Ответить  
 
 автор: .heed   (09.02.2010 в 21:31)
 
   для: .heed   (09.02.2010 в 21:28)
 

просто не понял сразу что проверяется строка а не массив :)

  Ответить  
 
 автор: freeing   (11.02.2010 в 16:32)   письмо автору
 
   для: .heed   (09.02.2010 в 21:31)
 

сделал так:


<?php
    $Array 
= Array 
    ( 
        
"a""b""c""d""e""f""g""h""i""j""k""l""m"
        
"n""o""p""q""r""s""t""u""v""w""x""y""z"
        
"1""2""3""4""5""6""7""8""9""0" 
    
); 

    
$Stryng "sdfgsdfgsdfgdr$tgd sdfgsyt";

    foreach(Array as 
$A)
    {
        
$B.= $A;
    }

    if(
strlen($this->Request) !== strspn($Stryng $B))
    {
        
// ..
    
}
?>


синтаксис или логику упростить можно?

  Ответить  
 
 автор: Trianon   (11.02.2010 в 23:02)   письмо автору
 
   для: freeing   (11.02.2010 в 16:32)
 

>логику упростить можно?

implode(), preg_quote(), preg_match()

  Ответить  
 
 автор: freeing   (12.02.2010 в 09:25)   письмо автору
 
   для: Trianon   (11.02.2010 в 23:02)
 

Там синтаксиса килограм получуся, а тут пару функции,
к тому же перебирать два массива или один, есть разница!

спасибо конечно за предложение, но тяжеловат пример получится...

  Ответить  
 
 автор: Trianon   (12.02.2010 в 10:07)   письмо автору
 
   для: freeing   (12.02.2010 в 09:25)
 

Какого еще синтаксиса килограмм?
Синтаксис не в килограммах меряется, а в штуках терминалов/нетерминалов - символов исходной/целевой грамматики.




<?php
    $Array 
= Array 
    ( 
        
"a""b""c""d""e""f""g""h""i""j""k""l""m"
        
"n""o""p""q""r""s""t""u""v""w""x""y""z"
        
"1""2""3""4""5""6""7""8""9""0" 
    
); 

    
$str "sdfgsdfgsdfgdr$tgd sdfgsyt";

    print   
preg_match('/^['.preg_quote(implode(''$Array), '/').']+$/'$str
          ? 
"true" 
          
"false";
?>

И таки да.
Для особо упёртых вынужден повторить. В слове String буква игрек отсутствует.

  Ответить  
 
 автор: freeing   (12.02.2010 в 10:42)   письмо автору
 
   для: Trianon   (12.02.2010 в 10:07)
 

ладно, спасYбо )))

  Ответить  
 
 автор: freeing   (09.02.2010 в 17:58)   письмо автору
 
   для: Trianon   (09.02.2010 в 16:07)
 

может как то так


<?php

//..

$res false;

foreach(
$this->Array["Symbol"] as $A)
{
    if(
current($this->Request,  $A) === true)
    {
        
$res true;

        break;
    }
}

echo(
$res);

//..

?>

  Ответить  
 
 автор: Loki   (09.02.2010 в 19:21)   письмо автору
 
   для: freeing   (09.02.2010 в 15:53)
 

http://ru.php.net/strpos

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

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