- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Два часа голову ломаю, решения не нашел.
Есть строка "Служба Технической Поддержки"
Нужно выделить фрагмент "Тех" тэгом <b>, то есть чтобы получилось:
"Служба <b>Тех</b>нической Поддержки"
preg_replace а также другие функции ищущие по шаблону и заменяющие фрагмент не предлагать, так как я не знаю с каким регистром этот фрагмент будет, то есть могут набрать "тех", "ТеХ", результатом работы этих функций будет:
"Служба <b>тех</b>нической Поддержки"
"Служба <b>ТеХ</b>нической Поддержки"
то есть будет искажение.
Нужна функция, которая ищет вхождение слова "Тех" и не заменяет его а вставляет перед ним и после свои необходимые символы.
Надеюсь понятно объяснил:)
Ну во-первых, все преги работают с ключиком i (ignore case), в во вторых здесь и простой replace подойдёт, например:
str_ireplace("тех", "<b>Тех</b>", "Строка, в которой надо заменить").
допустим нужная строка нах-ся в переменной ААА
делаем следующее:
в переменную ВВВ заносим строку ААА переводя ее в верхний регистр (есть стандартная ф-ция)
После этогов троке ВВВ ищем слово "ТЕХ", если находим, то получаемпозицию...
После этого надо строку ААА разделить на 3 строки:
1ая - символы до начала слова "тех"
2ая - само слово "тех"
3-я - символы после слова "тех"
И на последок в нашу ААА загоняем сумму строк: 1+"болд"+2+"болд"+3
Моно все это загнать в отдельную функцию, на вход которой будет подаватьсястрока и подстрока, которую нуно найти,а на выходе строка с выделенным фрагментом.
Я же говорю что
preg_replace("/str_what/i", "str_to", $string)
не подходит, так как мне нужно чтобы в стоке string фрагмент "str_what" остался без изменений, то есть я не знаю в каком регистре набрали str_to, например "ТЕХ", то и str_what примет значение "ТЕХ", а мне нужно чтобы он остался как в оригинале
Понял.
Тогда так:
preg_replace("/(.*)(Тех)(.*)/i", "$1<b>$2</b>$3", "Строка, в которой надо заменить")
СКОРПИОН, спасибо огромное, это то что нужно!
kittenk, тоже спасибо, но тот вариант намного проще.
Если в строке несколько вхождений кусков, в которые нужно врезать тэг, то эта комбинация вставляет его только в последнее вхождение:
preg_replace("/(.*)(Тех)(.*)/i", "$1<b>$2</b>$3", "Строка, в которой надо заменить")
Эта во все в строке:
preg_replace("/(.*?)(Тех)(.*?)/i", "$1<b>$2</b>$3", "Строка, в которой надо заменить")
тогда вот так:
$text = "Строка, в которой надо заменить";
$text = preg_replace_callback("/(.*)(Тех)(.*)/i", "callback_replace<название функции>", $text)
function callback_replace<название функции> ($matches) {
$text = $matches[1] . "<b>" . $matches[2] . "</b>" . $matches[3];
return $text;
}
или что-то похожее очень (просто не проверял :)), заменяет во всех вхождениях соответствия шаблону.
Сори, не дочитал сразу до конца Ваш пост, но так тоже можно делать.
Понапридумали-то. СКОРПИОНУ респект. Жалко в репу не дают + поставить...
Жалко в репу не дают + поставить...
Я за Вас поставил )
Скачать вот этот класс и забыть о проблемах, например когда искомое выражение встретится в проперти alt или title и вставка в него тега исказит всю выдачу :(
_ttp://www.phpclasses.org/safehighlight
_ttp://www.phpclasses.org/keyhighlighter