PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (106): В начало « ... 47 48 49 50 [51] 52 53 54 55 ... » В конец

> Найдено сообщений: 1581
Строитель Отправлено: 20 Июля, 2017 - 22:52:14 • Тема: Замена значений • Форум: Вопросы новичков

Ответов: 25
Просмотров: 758
Бронислав пишет:
Строитель
Работает!
И последний вопрос: если я указываю 'ключевое слово' кириллицей и несколько слов, то замена не происходит. Как это решается?
Даже нет, всё кириллическое оно отбраковывает.
Попробуйте декодировать url (хотя, если не ошибаюсь, в массиве $_GET данные вроде бы должны быть раскодированы) функцией rawurldecode(). Пример с её использованием:
Спойлер (Отобразить)
Строитель Отправлено: 20 Июля, 2017 - 22:21:59 • Тема: Замена значений • Форум: Вопросы новичков

Ответов: 25
Просмотров: 758
Бронислав пишет:
так я ж говорю, мне как раз нужно указать список этих слов, все ключевые слова, по которым пользователи переходят мне известны, ведь я их указываю в рекламной кампании! это ключевое слово, а не поисковый запрос, т.е. у меня есть определенный список этих слов.
И задача, чтобы код проверял совпадает ли utm_term, который вытаскивает GET из ссылки с тем utm_term, который указан в списке и, если да, то заменял это значение на новое значение и, а если нет, то оставлял в первоначальном виде.
А, ну так тогда всё тот же массив, что был и в начале этой темы
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. if (!empty($_GET['utm_term'])) {
  4.     $utm_term = strip_tags($_GET['utm_term']);
  5.    
  6.     // Массив для замены
  7.     $arr = [
  8.         'ключевое_слово_1' => 'заменяем на новое_значение_1',
  9.         'ключевое_слово_2' => 'заменяем на новое_значение_2',
  10.         'ключевое_слово_3' => 'заменяем на новое_значение_3'
  11.     ];
  12.    
  13.     // Заменяем макрос на соответствующее значение массива
  14.     $utm_term = strtr($utm_term, $arr);
  15. } else {
  16.     $utm_term = '';
  17. }
  18.  
  19. ?>
  20.  
  21. <!DOCTYPE html>
  22. <html lang="en">
  23.     <head>
  24.         <meta charset="UTF-8">
  25.         <meta http-equiv="refresh" content="1; url=http://xxx.xx/in/offer/xxx?aid=xxx&campaign=xx&source=<?=$_GET['utm_source']?>&sub_id4=<?=$utm_term?>">
  26.     </head>
  27. <body>
  28.  
  29. </body>
  30. </html>
Строитель Отправлено: 20 Июля, 2017 - 22:09:31 • Тема: Замена значений • Форум: Вопросы новичков

Ответов: 25
Просмотров: 758
Бронислав пишет:
Осталось сделать так, чтобы:
если utm_term=ключевое_слово_1 => заменяем на новое_значение_1
если utm_term=ключевое_слово_2 => заменяем на новое_значение_2 и т.д.
Как правильно это указать?
Если вам заранее не известны все ключевые слова, то наверное никак, ведь для замены чего-то на что-то необходима какая-то ассоциативная связь, верно?

Если вам не известен список ключевых слов, то как вы определите, что и на что надо заменить? -- понимаете о чём я?
(Добавление)
Бронислав, можно попробовать иначе. Например (так, как сейчас реализовано):
1. принимать макрос
2. передавать его в массив
3. производить замену макроса на уникальную строку
4. сохранять в ассоциативный массив пару "макрос" => "строка_на_которую_он_заменён"
5. записывать этот массив в текст.файл для последующего анализа
Строитель Отправлено: 20 Июля, 2017 - 21:45:48 • Тема: Замена значений • Форум: Вопросы новичков

Ответов: 25
Просмотров: 758
Бронислав пишет:
есть, вернуло значение в статистику 1500575243, все верно)
Ну и теперь осталось только выяснить, нужно ли что-то делать с оригинальным значением (макросом), и с заменяемым значением? Иначе говоря, нужно ли как-то связывать старое и новое значения? И нужно ли заменять метку времени, которая подставляется сейчас, на что-то другое? (например на уникальную строку, чтобы не было совпадений при одновременном запуске скрипта несколькими пользователями) Или больше ничего не требуется?
(Добавление)
Бронислав пишет:
а как правильно добавить несколько значений utm_term?
А вам разве заранее известны комбинации макросов?
Строитель Отправлено: 20 Июля, 2017 - 21:14:09 • Тема: Замена значений • Форум: Вопросы новичков

Ответов: 25
Просмотров: 758
Бронислав пишет:
$utm_term = ключевое_слово идем дальше
Точнее будет так -- если $utm_term не пуста, то заменяем её значение (что бы в ней не находилось) на текущую метку времени. Иначе - ничего не делаем, кроме инициализации переменной $utm_term (что бы скрипт не генерировал уведомлений об обращении к не существующей переменной, ведь обращение к ней прописано в html-шаблоне, и этот шаблон выводится в браузер НЕ зависимо от значения переменной $utm_term)
Строитель Отправлено: 20 Июля, 2017 - 20:29:50 • Тема: Замена значений • Форум: Вопросы новичков

Ответов: 25
Просмотров: 758
Бронислав, я напишу простой пример, и по его аналогии будем идти дальше.
(Добавление)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. if (!empty($_GET['utm_term'])) {
  4.     $utm_term = strip_tags($_GET['utm_term']);
  5.    
  6.     // Массив для замены
  7.     $arr = [
  8.         $utm_term => time() // Пока будем использовать временную метку
  9.     ];
  10.    
  11.     // Заменяем макрос на временную метку
  12.     $utm_term = strtr($utm_term, $arr);
  13. } else {
  14.     $utm_term = '';
  15. }
  16.  
  17. ?>
  18.  
  19. <!DOCTYPE html>
  20. <html lang="en">
  21.     <head>
  22.         <meta charset="UTF-8">
  23.         <meta http-equiv="refresh" content="1; url=http://xxx.xx/in/offer/xxx?aid=xxx&campaign=xx&source=<?=$_GET['utm_source']?>&sub_id4=<?=$utm_term?>">
  24.     </head>
  25. <body>
  26.  
  27. </body>
  28. </html>

(Добавление)
Бронислав, вам всё понятно из примера?
Строитель Отправлено: 20 Июля, 2017 - 19:35:38 • Тема: Замена значений • Форум: Вопросы новичков

Ответов: 25
Просмотров: 758
Бронислав пишет:
а куда это все вставить?
Ну это уже вам нужно самостоятельно смотреть, куда его прописывать...
Бронислав пишет:
мне неизвестно значение utm_term. В моем примере http://xxx.xxx/?utm_term={keyword} - {keyword} - макрос adwords`a, который подставляет запросы пользователей.
Примеры значений (макросов) можете привести?

Если вам не известно значение utm_term, то можно воспользоваться регулярным выражением для поиска макросов. Но только у меня встречный вопрос -- а как вы собираетесь производить замену, если никаких связей с макросами у вас нет? В предыдущем примере макрос являлся ключом массива, а значением этого ключа была строка для замены. Если вам не известен заранее макрос, то максимум, что вы сможете, это просто заменять их все на какую-то одну строку. Или же заменять их на случайно сгенерированную строку.
Строитель Отправлено: 20 Июля, 2017 - 18:45:27 • Тема: Замена значений • Форум: Вопросы новичков

Ответов: 25
Просмотров: 758
Бронислав пишет:
Предположим, ключевое_слово_1 = новое_значение_1, ключевое_слово_2 = новое_значение_2.
Можно так
PHP:
скопировать код в буфер обмена
  1. $str = 'http://xxx.xxx/?utm_term={keyword_1}';
  2.  
  3. $arr = [
  4.     'keyword_1' => 1,
  5.     'keyword_2' => 2,
  6.     'keyword_3' => 3
  7. ];
  8.  
  9. echo strtr($str, $arr); //Вернёт строку http://xxx.xxx/?utm_term={1}
Строитель Отправлено: 20 Июля, 2017 - 18:32:08 • Тема: Замена значений • Форум: Вопросы новичков

Ответов: 25
Просмотров: 758
Бронислав пишет:
Нужно, чтобы код искал значение utm_term, которые на данный момент в ссылке и подменял его на, например, 1, 2 и т.д., т.е. какое-то_ключевое_слово = 1 (или другое понятное мне значение);
В данный момент у вас ещё нет списка значений для замены и списка ключевых слов?
Цитата:
Список этих значений нужно где-то хранить. Возможно в файле указывать значения или через базу данных это делать?
Это уже как вам будет удобно -- если ваш скрипт использует для работы бд, то и список для замены хранить в бд. Если не использует, то в текст. файл. Если список для замены не должен подвергаться изменениям, то его вообще можно просто в массив сохранить.
Строитель Отправлено: 20 Июля, 2017 - 17:44:50 • Тема: Замена значений • Форум: Вопросы новичков

Ответов: 25
Просмотров: 758
Бронислав, напишите исходную строку, в которой необходимо произвести поиск с заменой, после напишите, что искать и на что менять.
Строитель Отправлено: 20 Июля, 2017 - 17:39:14 • Тема: Замена значений • Форум: Вопросы новичков

Ответов: 25
Просмотров: 758
Бронислав, ну наверное же регуляркой? Сохраняете строку в переменную, и производите поиск и замену.

зы: если я вас правильно понял.
Строитель Отправлено: 20 Июля, 2017 - 08:24:04 • Тема: Помогите проверить данные из масива на наличие опеределеных значений • Форум: Вопросы новичков

Ответов: 13
Просмотров: 544
PHP:
скопировать код в буфер обмена
  1. $arr = array('4ever', 'Masterpiece ', 'Boutique');
  2.  
  3. // Условие прописать в теле цикла
  4. if (in_array($catp['name'], $arr)) {
  5.     // Совпадение найдено
  6. }
Строитель Отправлено: 19 Июля, 2017 - 17:57:53 • Тема: Получить статьи с пустой картинкой • Форум: Регулярные выражения

Ответов: 6
Просмотров: 574
mstdmstd, чтобы не ходить кругами, напишите пожалуйста исходный текст, и результат, который надо получить из исходного текста - подумаем вместе.
Строитель Отправлено: 19 Июля, 2017 - 14:34:50 • Тема: Получить статьи с пустой картинкой • Форум: Регулярные выражения

Ответов: 6
Просмотров: 574
mstdmstd, на счёт ключа "news_image" - если в массиве с этим ключём вообще нет значений, то надо бы переписать шаблон без его использования. А если в этом ключе есть значения, среди которых так же есть и пустые элементы, то чтобы их отфильтровать, достаточно одной строки (без цикла и preg_match)
Строитель Отправлено: 18 Июля, 2017 - 19:34:51 • Тема: Замена части текста • Форум: Работа с файловой системой и файлами

Ответов: 1
Просмотров: 1844
20167, если заменяемый текст заранее известен, то str_replace(). Если строка динамическая, то можно preg_replace().

Страниц (106): В начало « ... 47 48 49 50 [51] 52 53 54 55 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB