Forum Webscript.Ru

Программирование => PHP => Тема начата: kama от 08 Октября 2002, 09:29:52

Название: Оформление текстов
Отправлено: kama от 08 Октября 2002, 09:29:52
Недавно вышедший "Типограф (http://www.artlebedev.ru/free/typograf/)" Лебедева, заставил задуматься о правильном оформлении текстов для Веба. Для обработки кавычек можно использовать скрипт (http://spectator.ru/issues/334)  Spectator\'a. А вот как сделать вставку nbsp вместо пробела между предлогом и словом? Да и вообще - кто какие методы использует?
Название: Оформление текстов
Отправлено: ThE0ReTiC от 08 Октября 2002, 11:15:42
Руки...
Название: Оформление текстов
Отправлено: kama от 08 Октября 2002, 11:20:13
А если текстов много и они довольно объемные?
Название: Оформление текстов
Отправлено: ThE0ReTiC от 08 Октября 2002, 11:33:06
kama
Ну для задачи, описанной в посте достаточно использовать регулярку. И скрипт Spectator\'a :)
Название: Оформление текстов
Отправлено: alex_gr от 08 Октября 2002, 11:48:43
пусть у тебя есть массив всех предлогов
$predlogi=array(...); // массив предлогов
$content="..."; // контент

foreach ($predlogi as $predlog)
$content=str_replace($predlog." ",$predlog." ",$content);
Название: Оформление текстов
Отправлено: ThE0ReTiC от 08 Октября 2002, 12:07:48
alex_gr
Хм...
А не проще ли регуляркой пройтись по тексту. У тебя же предлги не более трех символов и не содержат цифр.
Название: Оформление текстов
Отправлено: kama от 08 Октября 2002, 12:11:02
Пока сделали так:

function parse_content ($contents)
{
$contents=preg_replace ( "/<([^>]*)>/es", "\'<\'.str_replace (\'\\\\\\"\', \'┐\',\'\\\\1\').\'>\'", $contents);
$contents=preg_replace ( "/(.*?)<\\/code>/es", "\'\'.str_replace (\'\\\\\\"\', \'┐\',\'\\\\1\').\'\'", $contents);
$contents=preg_replace ( "/([>(\\s])(\\")([^\\"]*)([^\\s\\"])(\\")/", " \\\\1<\\\\3\\\\4>", $contents);
if (stristr ($contents, \'"\')):
$contents=preg_replace ( "/([>(\\s])(\\")([^\\"]*)([^ \\"])(\\")/", " \\\\1<\\\\3\\\\4>", $contents);
while (preg_match ("/(<)([^>]*)(<)/", $contents)) $contents=preg_replace ( "/(<)([^>]*)(<)([^>]*)(>)/", "\\\\1\\\\2„\\\\4“", $contents);
endif;
$contents = str_replace (\'<\',\'«\', $contents);
$contents = str_replace (\'>\',\'»\', $contents);
$contents = str_replace (\' - \',\' — \', $contents);
$contents = str_replace (\'┐\',\'"\', $contents);
$predlogs=array("а", "без", "более", "бы", "был", "была", "были", "было", "быть", "в", "вам", "вас", "весь", "во", "вот", "все", "всего", "всех", "вы", "где", "да", "даже", "для", "до", "его", "ее", "если", "есть", "еще", "же", "за", "здесь", "и", "из", "или", "им", "их", "к", "как", "ко", "когда", "кто", "ли", "либо", "мне", "может", "мы", "на", "надо", "наш", "не", "него", "нее", "нет", "ни", "них", "но", "ну", "о", "об", "однако", "он", "она", "они", "оно", "от", "очень", "по", "под", "при", "с", "со", "так", "также", "такой", "там", "те", "тем", "то", "того", "тоже", "той", "только", "том", "ты", "у", "уже", "хотя", "чего", "чей", "чем", "что", "чтобы", "чье", "чья", "эта", "эти", "это", "я");
foreach ($predlogs as $predlog)
$contents=str_replace(" ".$predlog." "," ".$predlog." ",$contents);
return $contents;
}