|
|
|
| Определяю тип файла и кодировку
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);
помогите разобрать или модернизировать | |
|
|
|
|
|
|
|
для: 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}
уфф разобрал что она значит) ошибки могут быть из-за одного символа! тесть и эксперементируй! редко с первого раза удаётся написать безошибочно сложную регулярку! | |
|
|
|