preg_replace возвращает NULL

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
516
Реакции
1.240
Приветствую,

Код:
PHP:
<?php

function getContent($page, $handle) {
    $source = explode( '||', $handle );
    $content = file_get_contents( $page );
 
    $encoding = mb_detect_encoding($content);
 
    if($encoding !== 'UTF-8')
    {
        $content = iconv($encoding, 'UTF-8', $content);
    }
 
    var_dump($content);
 
    $content = preg_replace( '#<script(.+?)script>#su', ' ', $content );
 
    var_dump($content);
 
    $content = preg_replace( '#<style(.+?)style>#su', ' ', $content );
 
    var_dump($content);
 
    $content = preg_replace( "#{$source[0]}#su",  $source[1], $content );
 
    var_dump($content);

    $content = strip_tags( $content,  $source[2] );
 
    if(isset($source[3], $source[4]))
    {
        $content = preg_replace( "#{$source[3]}#su",  $source[4], $content );
    }
 
    return $content;
}
     
getContent('http://www.cnews.ru/news/top/2016-06-10_sberbank_obezopasit_sebya_s_pomoshchyu_iskusstvennogo', '(.*)<div class="Anonce">(.+?)<div class=\'likes_block\'>(.*)||$2||<a><br><br /><hr><hr /><b><i><em><center><iframe><object><option><ul><li><p><img>');

После первого же preg_replace в $content у нас NULL (#<script(.+?)script>#su). Поочередно убирал замены, после первой сразу NULL.

Кодировка самого файла UTF-8 (Notepad++)

Почему?

Код после ионкуба, возможно, дело в этом...
 
Последнее редактирование:
Там не вся страница в utf-8.
Есть много фрагментов в cp1251
<!--BEGIN Medialand вторые страницы, верхний баннер 600х90 (cnews_TOP) (inline)-->
<!--BEGIN Medialand Баннер 180x280: первая страница раздела и "тела" всех публикаций.
<!--BEGIN Medialand баннер 500х90 в конце тела публикаций раздела Лента новостей (cnews_bot) (inline)-->
<!--BEGIN Medialand правый баннер 300х250 (cnews_CLUSTER) (inline)-->
<!--BEGIN Medialand все страницы, 240х200, место ИМХО (inline)-->
Если вызывать preg_last_error(), то видно что падает из-за PREG_BAD_UTF8_ERROR.

В шаблонах тут только латиница, так что можно убрать модификатор /u.
 
Там не вся страница в utf-8.
Есть много фрагментов в cp1251

Если вызывать preg_last_error(), то видно что падает из-за PREG_BAD_UTF8_ERROR.

В шаблонах тут только латиница, так что можно убрать модификатор /u.
Как исправить не знаете? гугл только описание дает
 
Назад
Сверху