Как удалить в предложении все кроме букв
В титле попадаются и скобки и тире и знаки препинания которые нужно убрать.
Пока сделал подобное:
$title|replace:" -":""|replace:" ":", "
убрал все тире с прилегающим пробелом и потом заменил пробелы на запятую с пробелом))
получил из титла keywords "ключевые слова"… может не совсем правильно, но как умею))
пробовал с помощью regex_replace убрать знаки препинания и кавычки разные, ничего не получилось(
Подскажите как правильно почистить предложение от всего кроме букв, цифр и дефиса?
Сейчас приложение может быть такое:
Новая модель [U-4rxx], стоит всего! 100$ (3100Р) — новогодняя акция
у меня получается вывести так:
Новая, модель, [U-4rxx],, стоит, всего!, 100$, (3100Р), новогодняя, акция
Понимаю что ключами будут выступать не совсем полезные слова, но по другому ключи сделать не могу, только из титла.
Спасибо.
… может просто перечислить в replace все что нужно заменить? как правильно перечислять в tpl?
так вроде получается: $title|replace:" -":""|replace:"(":""… убираем тире, потом скобку,… и так далее, но как то вроде не по феншую)
так работает но в php, а вот в tpl не могу побороть — там немного иначе (Тебе нужно использовать модификатор regex_replace, который работает как preg_replace() и позволяет использовать регулярные выражения.
Вроде бы работает и в tpl, если вот так.так работает но в php, а вот в tpl не могу побороть — там немного иначе (
{$title|regex_replace:"/[^[:alnum:]-]/ui":""}
regex_replace:"/[\~\`\!\+\=\;\:\_\-\№ \— \'\.\,\|\{\@\#\%\^\&\*\(\)\}\[\]\<\>]+/i":", "
вроде убирает, только не всегда все корректно на выходе — по записи правильно все делает, но не так как хочется....
бывает в предложении два пробела или две скобки подряд, три точки или вопросительных знака и на выходе получаю иногда слово с подряд идущими двумя запятыми или вообще пробел с запятой иногда и вначале, что-то типа такого:
, слово, слово,, слово,, слово
это уже конечно лучше чем содержание мусора)) есть мысли как подправить?
{$title|regex_replace:"/[^[:alnum:]-]/ui":""} вообще удаляло все русские буквы и пробелы — выводило слова с латинскими буквами слитые в одно целое), разбил добавлением пробела " " вместо "" не стал разбираться с setlocale()...
появилась новая Г:
спец символы типа « обрабатываются как &_laquo; и в итоге после удаления мусора получаю ключ laquo))
Это из-за того, что тайтл перед передачей в шаблон обрабатывается htmlspecialchars(), скорее всего в файле page.class.phpспец символы типа « обрабатываются как &_laquo; и в итоге после удаления мусора получаю ключ laquo))
Нужно, имхо, два раза применить regex_replace, в первый раз то, что давал, добавивь туда ещё "кроме пробела". Если не отключать htmlspecialchars(), придется перечислять ещё для замены в группирующих скобках сами html-сущности. Это всё заменяем на пустую строку. Второй раз уже между слов вставляем запятую.