sorry_i_noob
@sorry_i_noob

Почему не работает str_replace?

Здравствуйте! Я хотел попрактиковаться в парсинге сайтов. И объектом моей практики выбрал этот сайт. Если открыть главную страницу https://toster.ru, зайти в режим разработчика, то в первом же теге script в body - под #dfp_target можно найти вот, что:
//<![CDATA[
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
      
      ga('create', 'UA-726094-14', 'toster.ru');
      ga('require', 'displayfeatures');
      ga('set', 'dimension1', 'authorized'); // user type - guest/authorized
      ga('set', 'dimension2', 'sorry_i_noob'); // username
      
      (function() {
        var win = window;
        var removeUtms = function(){
          var location = win.location;
          if (location.href.indexOf('utm') != -1 && win.history.replaceState) {
            win.history.replaceState({}, '', location.pathname);
          }
        };
        ga('require', 'GTM-T95ZCNP');
        ga('send', 'pageview', { 'hitCallback': removeUtms });
      })();
      
      if (0) {
          ga('send', 'event', 'user', 'registration', 'success');
      };
      
    //]]>


Я решил попробовать это удалить. Вот мой код:
$content = file_get_contents('https://toster.ru/');
$content = str_replace("//<![CDATA[
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
	(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-726094-14', 'toster.ru');
ga('require', 'displayfeatures');
ga('set', 'dimension1', 'authorized'); // user type - guest/authorized
ga('set', 'dimension2', 'sorry_i_noob'); // username

(function() {
	var win = window;
	var removeUtms = function(){
		var location = win.location;
		if (location.href.indexOf('utm') != -1 && win.history.replaceState) {
			win.history.replaceState({}, '', location.pathname);
          }
	};
	ga('require', 'GTM-T95ZCNP');
	ga('send', 'pageview', { 'hitCallback': removeUtms });
      })();

if (0) {
	ga('send', 'event', 'user', 'registration', 'success');
};

//]]>", '', $content, $count);
echo $count;

Но он не работает. $count равен нулю. Почему так?
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
gobananas
@gobananas
finishhim.ru
Такие сложные конструкции лучше удалять preg_replace()
$content = preg_replace('/\/\/<!(.*?)\/\/\]\]>/ism', '', $content);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@maiskiykot
Free coder
Весь javascript крайне трудно поддается парсингу. Делайте все проще - через explode() и будет вам щастие.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы