"абв"где" -> «абв«где»

ТопольМ

Новичок со стажем
"абв "где" -> «абв «где»

Подскажите как сделать правильно следующую замену:
"абв"где" -> «абв«где»

т.е html-текст

td>"Мы очень многого ждем от России в качестве будущего председателя "большой восьмерки", -

заменить на
td>«Мы очень многого ждем от России в качестве будущего председателя «большой восьмерки», -

моя версия выдает неправильно, вот она:
PHP:
$pattern = array(  			
'#([,.>\';: ])\"([^\"A-Za-z<>]*)\"([,.<\';: ])#',// rus  	
'#([,.>\';: ])&quot;([^\"A-Za-z<>]*)&quot;([,.<\';: ])#',// rus  	
'#([,.>\';: ])\«([^\»А-Яа-я<>]*)\»([,.<\';: ])#'// eng  
);  		
$replace = array( 
'\1«\2»\3',  			
'\1«\2»\3',  			
'\1"\2"\3'  			
);  		
return preg_replace($pattern, $replace, $value);
и выдает она:
td>"Мы очень многого ждем от России в качестве будущего председателя «большой восьмерки», -
 

Фанат

oncle terrible
Команда форума
в гугль по слову типографика.
найдёшь кучу решений.
 

ТопольМ

Новичок со стажем
всем спасибо, про типографику надо будет подумать... :)

проблема решена:
PHP:
$pattern = array(
'#([,.>\';: ])\"([^\"A-Za-z<>]*)\"([,.<\';: ])#',	// rus
'#([,.>\';: ])&quot;([^\"A-Za-z<>]*)&quot;([,.<\';: ])#',// rus
'#([,.>\';: ])\"([^\"A-Za-z<>]*)\»([,.<\';: ])#',	// rus
'#([,.>\';: ])\«([^\»А-Яа-я<>]*)\»([,.<\';: ])#',	// eng
'#([,.>\';: ])\«([^\»А-Яа-я<>]*)\"([,.<\';: ])#'	// eng
);
$replace = array(
'\1«\2»\3',
'\1«\2»\3',
'\1«\2»\3',
'\1"\2"\3',
'\1"\2"\3'
);
return preg_replace($pattern, $replace, $value);
итог:
"Собаки от "А" до "Я"
->
«Собаки от «А» до «Я»
 

SiMM

Новичок
Я бы всё же исправил (благо сложностей нет никаких) - зато в следующий раз не придётся думать о том, что функция полностью работоспособна только когда
> обрабатывается конечная html-страница, т.е. вокруг всегда есть теги
 

xargon

Новичок
И все таки правильнее (имхо) заменять на html-эквиваленты символов.
пример тут:
http://www.artlebedev.ru/tools/typograf/
попробуйте оттипографить тот же "день "хорька"" и посмотрите результат.
 
Сверху