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

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

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

 

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

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

тема: Разбор регулярки
 
 автор: Kolbo4ka   (21.09.2007 в 15:10)   письмо автору
 
 

Определяю тип файла и кодировку

if (stristr($head,"Content-Type:")){
preg_match("#Content-Type: ([^\"';\s]+);?( charset=([^\"';\s]+))?[\s\r\n]#is",$head,$type);
$content_type=strtolower($type[1]);
$content_charset=strtolower($type[3]);
}
if (!$content_type){$content_type="text/html";}
for($i=0;$i<count($ras_array);$i++){
if ($content_ras==$ras_array[$i]){$content_type="application/octet-stream";}
}
if (!$content_charset){
preg_match("#<meta[\s]http-equiv=\"?'?Content-Type\"?'?.*?charset=(.*?)[\"'\s>]#is",$content,$content_charset);
$content_charset=strtolower($content_charset[1]);
}
if (!$content_charset){$content_charset=$charset_query;}



Так вот почемуто у меня не все типы файлов определяються, я думаю это связанно с регуляркой preg_match("#Content-Type: ([^\"';\s]+);?( charset=([^\"';\s]+))?[\s\r\n]#is",$head,$type);
помогите разобрать или модернизировать

   
 
 автор: tricket   (28.09.2007 в 21:12)   письмо автору
 
   для: Kolbo4ka   (21.09.2007 в 15:10)
 


"#Content-Type: ([^\"';\s]+);?( charset=([^\"';\s]+))?[\s\r\n]#is

означает
1)Content-Type:
+
2)([^\"';\s]+);?
означает все символы кроме пробела, "';\ и заключить эти совпадения в отдельный паттерн!
+
3);
+
4)( charset=([^\"';\s]+))?
а)([^\"';\s]+) означает все символы кроме пробела, "';\ и заключить эти совпадения в отдельный паттерн! может употреблятся эти символы 1 или более раз!
б)( charset=([^\"';\s]+))? употребляется 1 или 0 раз
+
5)[\s\r\n]-пробел...но я бы написал лучше [\s\r\n]{1}
уфф разобрал что она значит) ошибки могут быть из-за одного символа! тесть и эксперементируй! редко с первого раза удаётся написать безошибочно сложную регулярку!

   
Rambler's Top100
вверх

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