Поиск и замена в ПХП по целым словам?

alex-bot

Nulled-Man
Регистрация
4 Май 2007
Сообщения
496
Реакции
161
Нужно из тайтлов сделать теги к постам, но в англ языке много мусора типа предлоги артикли, нужно все это выкинуть...
Начал делать так потом понял, что это удаляет все вхождения:
PHP:
$zameny = array("-", "!", "?", ":",  "1", "2", "3", "4", "5", "6", "7", "8", "9", "0","a", "an", "the", "to", "in", "of", "by", "vs", "A", "An", "The", "To", "In", "Of", "By", "Vs", "as", "As", "be", "is", "can", "more", "better", "or", "with", "against", "which", "certainly" );
$tags = str_replace($zameny, "", $subj);
$tags = str_replace(" ", ", ", $tags);
Как вариант можно добавить пробелы типа " An ", но тоже коряво, может есть что-то готовое или как удалять только если это целое слово?
Еще в догонку думаю может удалять по количеству букв в слове, т.е. если меньше 5 удалить... тогда будет что-то вроде этого?
PHP:
$string = preg_replace("[a-zA-Z]{0,5}\i", "", $string);
Или может что-то готовое есть... чтоб велосипед не изобретать...
 
Нужно из тайтлов сделать теги к постам, но в англ языке много мусора типа предлоги артикли, нужно все это выкинуть...
Начал делать так потом понял, что это удаляет все вхождения:
PHP:
$zameny = array("-", "!", "?", ":",  "1", "2", "3", "4", "5", "6", "7", "8", "9", "0","a", "an", "the", "to", "in", "of", "by", "vs", "A", "An", "The", "To", "In", "Of", "By", "Vs", "as", "As", "be", "is", "can", "more", "better", "or", "with", "against", "which", "certainly" );
$tags = str_replace($zameny, "", $subj);
$tags = str_replace(" ", ", ", $tags);
Как вариант можно добавить пробелы типа " An ", но тоже коряво, может есть что-то готовое или как удалять только если это целое слово?
Еще в догонку думаю может удалять по количеству букв в слове, т.е. если меньше 5 удалить... тогда будет что-то вроде этого?
PHP:
$string = preg_replace("[a-zA-Z]{0,5}\i", "", $string);
Или может что-то готовое есть... чтоб велосипед не изобретать...

Вообще, скорее всего в генерации тегов предусмотрена возможность удаления коротких символов.
Либо можно удалить так
PHP:
$string = preg_replace("~[^a-zA-Z0-9](\S{1,5})[^a-zA-Z0-9]~s",   "", ' '.str_replace(' ', '  ', $text).' '  );
 
Назад
Сверху