Шаблон для ereg

WMix

герр M:)ller
Партнер клуба
Шаблон для ereg

получаю вот такой заголовок (слова перекодированны)

=?windows-1251?Q?Компьютерные =?windows-1251?Q?_Анекдоты!!!?

перекодирую и вырезаю лишнее

PHP:
if(ereg("=\?.{0,}\?[Qq]\?",$msg_subj)){ 
				$msg_subj=quoted_printable_decode($msg_subj); 
				//$msg_subj=ereg_replace("=\?.{0,}\?[Qq]\?","",$msg_subj); 
				$msg_subj=ereg_replace("\?=","",$msg_subj);
			}
Алгоритм вырезал слово "Компьютерные"

как это избежать
 

WMix

герр M:)ller
Партнер клуба
помогите
или
где-то в шаблоне ошибочка
или может алгоритмик поправить
 

Zh0rzh

Новичок
>> Zh0rzh, str_replace
Парень про eregi_replace спрашивал ... Вот я ему указал на ошибку...

2 WMix
Как верно заметил Demiurg эфективнее будет так
$msg_subj=str_replace("?=","",$msg_subj);

А вообще что тбе надо сделать? По скольку потестив твой алгоритм вышло что он вообще не работает :))))
 

WMix

герр M:)ller
Партнер клуба
я не знаю почему
но в регулярах поисчезали слэши
перед каждым вопросом в регуляре стоит один обратный слэш
=\?.{0,}\?[Bb]\?
а слово сьелось в 3 строке
PHP:
1. if(ereg("=\?.{0,}\?[Qq]\?",$msg_subj)){ 
2.    $msg_subj=quoted_printable_decode($msg_subj); 
3.    $msg_subj=ereg_replace("=\?.{0,}\?[Qq]\?","",$msg_subj); 
4.    $msg_subj=ereg_replace("\?=","",$msg_subj);
}
 

WMix

герр M:)ller
Партнер клуба
пока ещё никто не ответил второй вопрос
где в imap_header стоит

флажёк, приоритет

и еслть где в голове инфо о Атачментах
 

Zh0rzh

Новичок
перед всеми спец. символами надо ставить ДВА слыша .... в регэкспах ....

ты подробней свою задачу опиши
 

WMix

герр M:)ller
Партнер клуба
Задача та в общем проста
В imap_header считываю

from:
to:
subject:
...

Если Имя написанно не LAT то оно закодированно

=?windows-1251?Q?Компьютерные =?windows-1251?Q?_Анекдоты!!!?

я его перекодировал но всё лишнее надо выбросить
 

WMix

герр M:)ller
Партнер клуба
PHP:
function decode_head($text)
{
	if (ereg("=[?].+[?][BbQq][?]",$text))
	{
		$teile=explode ("?",$text);
		while (list($key,$value) =each($teile))
		{
			if ($key==3 || $key==7 || $key==11 || $key==15 || $key==19){
			
				if(preg_match("/b|B/",$teile[2])){
					$d_text.=base64_decode($value);
				}else{
					$d_text.=quoted_printable_decode($value);
				}
			}
		}
		return $d_text;
	}
	else
	{
		return $text;
	}

}
решил пока так
Хочет кто код поправить?
 
Сверху