Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Замена значений
Форумы портала PHP.SU » » Вопросы новичков » Замена значений

Страниц (2): [1] 2 »
 

1. Бронислав - 20 Июля, 2017 - 17:32:10 - перейти к сообщению
Ребята, подскажите, пожалуйста, как можна подменить полученные данные, чтобы в статистику попали измененные/зашифрованные значения и только я мог их расшифровать? (все делается, чтобы видеть ключевые слова)
Параметры из контекстной сети вытаскиваются вот так:
http://xxx.xxx/...&source=<?=$_GET['utm_source']?>&sub_id4=<?=$_GET['utm_term']?>
для последующей передачи в статистику другого сайта.
Спасибо!
2. Строитель - 20 Июля, 2017 - 17:39:14 - перейти к сообщению
Бронислав, ну наверное же регуляркой? Сохраняете строку в переменную, и производите поиск и замену.

зы: если я вас правильно понял.
3. Бронислав - 20 Июля, 2017 - 17:41:31 - перейти к сообщению
суть понимаю, варианты представляю, но не знаком с языком Недовольство, огорчение
не подскажете, как это все оформить?
4. Строитель - 20 Июля, 2017 - 17:44:50 - перейти к сообщению
Бронислав, напишите исходную строку, в которой необходимо произвести поиск с заменой, после напишите, что искать и на что менять.
5. Бронислав - 20 Июля, 2017 - 17:57:14 - перейти к сообщению
Строитель, Скрипт подставляет из строки браузера значения, которые были динамически подставлены макросом контекстной сети - http://xxx.xxx/?utm_term={keyword}
В отдельном файле у меня указано вот это:
<meta http-equiv="refresh" content="1; url=http://xxx.xxx/in/offer/xxx?aid=xxx&campaign=xxx&source=<?=$_GET['utm_source']?>&sub_id4=<?=$_GET['utm_term']?>">
GET вытаскивает эти значения и вот по ссылке, которая получается идет дальшейший переход.
Нужно, чтобы код искал значение utm_term, которые на данный момент в ссылке и подменял его на, например, 1, 2 и т.д., т.е. какое-то_ключевое_слово = 1 (или другое понятное мне значение);
Список этих значений нужно где-то хранить. Возможно в файле указывать значения или через базу данных это делать?
6. Строитель - 20 Июля, 2017 - 18:32:08 - перейти к сообщению
Бронислав пишет:
Нужно, чтобы код искал значение utm_term, которые на данный момент в ссылке и подменял его на, например, 1, 2 и т.д., т.е. какое-то_ключевое_слово = 1 (или другое понятное мне значение);
В данный момент у вас ещё нет списка значений для замены и списка ключевых слов?
Цитата:
Список этих значений нужно где-то хранить. Возможно в файле указывать значения или через базу данных это делать?
Это уже как вам будет удобно -- если ваш скрипт использует для работы бд, то и список для замены хранить в бд. Если не использует, то в текст. файл. Если список для замены не должен подвергаться изменениям, то его вообще можно просто в массив сохранить.
7. Бронислав - 20 Июля, 2017 - 18:42:30 - перейти к сообщению
Строитель пишет:
Бронислав пишет:
Нужно, чтобы код искал значение utm_term, которые на данный момент в ссылке и подменял его на, например, 1, 2 и т.д., т.е. какое-то_ключевое_слово = 1 (или другое понятное мне значение);
В данный момент у вас ещё нет списка значений для замены и списка ключевых слов?
Цитата:
Список этих значений нужно где-то хранить. Возможно в файле указывать значения или через базу данных это делать?
Это уже как вам будет удобно -- если ваш скрипт использует для работы бд, то и список для замены хранить в бд. Если не использует, то в текст. файл. Если список для замены не должен подвергаться изменениям, то его вообще можно просто в массив сохранить.

1) готового списка пока что нет. Предположим, ключевое_слово_1 = новое_значение_1, ключевое_слово_2 = новое_значение_2.
2) скрипт бд не использует. Список для замены должен оставаться неизменным (периодически будет мной редактироваться), значения должны из него браться (по формату из п.1), чтобы передать новое значение в статистику, т.е. подставить в конечный вариант ссылки.
Я для себя так понимаю: если в utm_term ключево_слово_1, то заменяем его на новое_значение_1, подставляем его в ссылку.
8. Строитель - 20 Июля, 2017 - 18:45:27 - перейти к сообщению
Бронислав пишет:
Предположим, ключевое_слово_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}
9. Бронислав - 20 Июля, 2017 - 19:25:57 - перейти к сообщению
Строитель пишет:
Бронислав пишет:
Предположим, ключевое_слово_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}

а куда это все вставить? Растерялся
и вот вопрос :
Строитель пишет:
$str = 'http://xxx.xxx/?utm_term={keyword_1}';

мне неизвестно значение utm_term. В моем примере http://xxx.xxx/?utm_term={keyword} - {keyword} - макрос adwords`a, который подставляет запросы пользователей.
10. Строитель - 20 Июля, 2017 - 19:35:38 - перейти к сообщению
Бронислав пишет:
а куда это все вставить?
Ну это уже вам нужно самостоятельно смотреть, куда его прописывать...
Бронислав пишет:
мне неизвестно значение utm_term. В моем примере http://xxx.xxx/?utm_term={keyword} - {keyword} - макрос adwords`a, который подставляет запросы пользователей.
Примеры значений (макросов) можете привести?

Если вам не известно значение utm_term, то можно воспользоваться регулярным выражением для поиска макросов. Но только у меня встречный вопрос -- а как вы собираетесь производить замену, если никаких связей с макросами у вас нет? В предыдущем примере макрос являлся ключом массива, а значением этого ключа была строка для замены. Если вам не известен заранее макрос, то максимум, что вы сможете, это просто заменять их все на какую-то одну строку. Или же заменять их на случайно сгенерированную строку.
11. Бронислав - 20 Июля, 2017 - 20:11:32 - перейти к сообщению
Вот этот скрипт у меня указан в одном файле
Цитата:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script>
function probrosUtm(url, _blank){
$('a').attr('href',url + window.location.search);
if(_blank){
$('a').attr('target','_blank')
}else{
$('a').attr('target','_self')
}
}
$(function(){
probrosUtm('knopa.php/', true);
});
</script>

и вот файл knopa.php
Цитата:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="1; url=http://xxx.xx/in/offer/xxx?aid=xxx&campaign=xx&source=<?=$_GET['utm_source']?>&sub_id4=<?=$_GET['utm_term']?>">
</head>
<body>
</body>
</html>

Возможно, я что-то не так объяснил. Вот в этой части ссылки sub_id4=<?=$_GET['utm_term']?> - utm_term имеет значение ключевого слова, например, "php для новичков". GET берет это значение из адресной строки браузера(насколько я понял). То есть ссылка из которой он берет значения выглядит
Цитата:
http://www.zzz.zzz/?utm_source=search&utm_medium=cpc&utm_campaign=yyyy&utm_term=%2Bphp%20%2Bдля%20%2Bновичков&gclid=.......

и в статистике в столбце sub_id4 показывается значение php для новичков
, и нужно, чтобы оно подменилось, как вы подсказываете, из массива.
12. Строитель - 20 Июля, 2017 - 20:29:50 - перейти к сообщению
Бронислав, я напишу простой пример, и по его аналогии будем идти дальше.
(Добавление)
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>

(Добавление)
Бронислав, вам всё понятно из примера?
13. Бронислав - 20 Июля, 2017 - 21:08:12 - перейти к сообщению
поверхностно)
проверяем значение -> если $utm_term = ключевое_слово идем дальше , нет - оставляем пустым -> strtr выводит $utm_term с заменой из массива. Верно?
14. Строитель - 20 Июля, 2017 - 21:14:09 - перейти к сообщению
Бронислав пишет:
$utm_term = ключевое_слово идем дальше
Точнее будет так -- если $utm_term не пуста, то заменяем её значение (что бы в ней не находилось) на текущую метку времени. Иначе - ничего не делаем, кроме инициализации переменной $utm_term (что бы скрипт не генерировал уведомлений об обращении к не существующей переменной, ведь обращение к ней прописано в html-шаблоне, и этот шаблон выводится в браузер НЕ зависимо от значения переменной $utm_term)
15. Бронислав - 20 Июля, 2017 - 21:32:16 - перейти к сообщению
Строитель пишет:
Бронислав пишет:
$utm_term = ключевое_слово идем дальше
Точнее будет так -- если $utm_term не пуста, то заменяем её значение (что бы в ней не находилось) на текущую метку времени. Иначе - ничего не делаем, кроме инициализации переменной $utm_term (что бы скрипт не генерировал уведомлений об обращении к не существующей переменной, ведь обращение к ней прописано в html-шаблоне, и этот шаблон выводится в браузер НЕ зависимо от значения переменной $utm_term)

есть, вернуло значение в статистику 1500575243, все верно)
Цитата:
$arr = [
$utm_term="автобусы междугородние" => "1111" // Пока будем использовать временную метку
];

все передается!а нет, поспешил я..
а как правильно добавить несколько значений utm_term?

 

Powered by ExBB FM 1.0 RC1