- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Два часа голову ломаю, решения не нашел.
Есть строка "Служба Технической Поддержки"
Нужно выделить фрагмент "Тех" тэгом <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