Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: странное поведение
 
 автор: dzfelix   (09.09.2007 в 11:12)   письмо автору
 
 



    $search = array ("'<script[^>]*?>.*?</script>'si",  // Вырезается javascript
                 "'<[\/\!]*?(?(^img)[^img]|[^<>])*?>'si",           // Вырезаются html-тэги  кроме картинок 
         "'src=\"\/'si", //поищем изображения без абсолютного пути
                 "'([\r\n])[\s]+'",                 // Вырезается пустое пространство
                 "'&(quot|#34);'i",                 // Замещаются html-элементы
                 "'&(amp|#38);'i",
                 "'&(lt|#60);'i",
                 "'&(gt|#62);'i",
                 "'&(nbsp|#160);'i",
                 "'&(iexcl|#161);'i",
                 "'&(cent|#162);'i",
                 "'&(pound|#163);'i",
                 "'&(copy|#169);'i",
                 "'&#(\d+);'e");                    // вычисляется как php

    $replace = array ("",
                  "",
          "src=\"http://$host/", // дополним линк до абсолютного
                  "\\1",
                  "\"",
                  "&",
                  "<",
                  ">",
                  " ",
                  chr(161),
                  chr(162),
                  chr(163),
                  chr(169),
                  "chr(\\1)");
                  

    $text = preg_replace ($search, $replace, $content);
    
    $text = $author.",".$authors_mail.$text;
    echo $text;


вот так - работает, но стоит убрать это - как всё, вылетаем с ошибками:

Compilation failed: assertion expected after (?( at offset 12 в строке такой-то, в модуле таком то...

   
 
 автор: kasmanaft   (09.09.2007 в 12:45)   письмо автору
 
   для: dzfelix   (09.09.2007 в 11:12)
 

> вот так - работает, но стоит убрать это
Что убрать?

   
 
 автор: Trianon   (09.09.2007 в 13:05)   письмо автору
 
   для: dzfelix   (09.09.2007 в 11:12)
 

код, помимо echo-вывода, создает три переменные.
Попробуйте строку $text = preg_replace ($search, $replace, $content);
поменять на строку $text = $content;
По сути - отключите преобразование.
По форме - контекст останется неизменным.

   
 
 автор: kasmanaft   (09.09.2007 в 13:56)   письмо автору
 
   для: Trianon   (09.09.2007 в 13:05)
 

> По форме - контекст останется неизменным.
То есть?

$text = $author.",".$authors_mail.$text;

   
 
 автор: Trianon   (10.09.2007 в 09:49)   письмо автору
 
   для: kasmanaft   (09.09.2007 в 13:56)
 

а эту строку я менять не предлагал.

   
 
 автор: dzfelix   (09.09.2007 в 20:19)   письмо автору
 
   для: Trianon   (09.09.2007 в 13:05)
 

простите.
$content - задана ранее,
а при том как убираешь вывод на экран как раз и вылетает та самая бякость, которую указал

   
 
 автор: Trianon   (10.09.2007 в 09:49)   письмо автору
 
   для: dzfelix   (09.09.2007 в 20:19)
 

ну тогда внимательно смотрите что за assertion.
Может в этом месте echo вообще писать нельзя?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования