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 » PHP » Регулярные выражения » Помогите заменить выражение

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

1. tr0y - 26 Сентября, 2010 - 01:51:06 - перейти к сообщению
Помогите с заменой. Что нужно заменить и на какое выражение?
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.  
  4.         function getDownLoadLink($file){
  5.         $inCore = cmsCore::getInstance();
  6.  
  7.                 trim($file);
  8.                 $filefull = $_SERVER['DOCUMENT_ROOT'].$file;   
  9.                 if (file_exists($filefull)){
  10.                         $downloaded = $inCore->fileDownloadCount($file);
  11.                
  12.                         $filesize = round(filesize($filefull)/1024, 2);                
  13.                         $link = '<table border="0" cellpadding="2" cellspacing="0"><tr>';              
  14.                                 $link .= '<td width="16"><img src="/images/icons/download.gif" border="0"</td>';
  15.                                 $link .= '<td width=""><a href="/load/url='.$file.'" alt="Скачать">'.basename($file).'</a></td>';
  16.                                 $link .= '<td width="">| '.$filesize.' Kб</td>';
  17.                                 $link .= '<td width="">| Скачан: '.$downloaded.' раз</td>';                                    
  18.                         $link .= '</tr></table>';
  19.                 } else {
  20.                         $link = 'Файл "'.$filefull.'" не найден!';
  21.                 }      
  22.                 return $link;
  23.         }
  24.  
  25.  
  26.         function f_filelink(&$text){
  27.  
  28.                 //REPLACE FILE DOWNLOAD LINKS
  29.                 $regex = '/{(СКАЧАТЬ=)\s*(.*?)}/i';
  30.                 $matches = array();
  31.                 preg_match_all( $regex, $text, $matches, PREG_SET_ORDER );             
  32.                 foreach ($matches as $elm) {   
  33.                         $elm[0] = str_replace('{', '', $elm[0]);
  34.                         $elm[0] = str_replace('}', '', $elm[0]);                       
  35.                         parse_str( $elm[0], $args );
  36.                         $file=@$args['СКАЧАТЬ'];       
  37.                         if ($file){            
  38.                                 $output = getDownLoadLink($file);                      
  39.                         } else { $output = ''; }
  40.                         $text = str_replace('{СКАЧАТЬ='.$file.'}', $output, $text );   
  41.                 }
  42.  
  43.                 return true;
  44.         }
  45. ?>


Нужно чтобы вместо дериктории сайта можно было указать любую ссылку на файл.
Заранее спасибо!
2. JustUserR - 27 Сентября, 2010 - 00:50:36 - перейти к сообщению
tr0y пишет:
Нужно чтобы вместо дериктории сайта можно было указать любую ссылку на файл
Для предоставления возможности пользователям по загрузки файлов из вашего web-сайта путем указания их ключевых идентификаторов - необходимо разработать схему согласно который будет производиться запрещение прямого доступа по автоматическим виртуальным web-путям В частности возможно использвание механизма aliss-инга благодаря применению которого пользователь имеет возможность указания прямого пути к файлу - однако для реализации его загрузки происходит обязательный вызов PHP-скрипта
3. tr0y - 27 Сентября, 2010 - 08:57:36 - перейти к сообщению
JustUserR пишет:
tr0y пишет:
Нужно чтобы вместо дериктории сайта можно было указать любую ссылку на файл
Для предоставления возможности пользователям по загрузки файлов из вашего web-сайта путем указания их ключевых идентификаторов - необходимо разработать схему согласно который будет производиться запрещение прямого доступа по автоматическим виртуальным web-путям В частности возможно использвание механизма aliss-инга благодаря применению которого пользователь имеет возможность указания прямого пути к файлу - однако для реализации его загрузки происходит обязательный вызов PHP-скрипта



Выше был приведен скрипт фильтра, который ищет в статьях ключевое слово, а именно {ФАЙЛ=}, и включает счетчик. Нужно просто сменить критерий, откуда можно указывать файлы.
4. JustUserR - 27 Сентября, 2010 - 23:58:44 - перейти к сообщению
tr0y пишет:
Нужно просто сменить критерий, откуда можно указывать файлы.
Приведенный вами шаблон регулярного выражения осуществляет поиск специальной текстовой конструкции ФАЙЛ которая по сути позволяет использовать произвольную строку в качестве имени ресурса - поскольку применяется шаблон .*? производящий универсальный поиск и генерацию обратной ссылки для замены Кроме того в случае примененеия регулярных выражений к пользовательской информации - необходимо осуществлять предварительную сверку кодовых страниц поскольку они могу не совпадать с ожидаемым представлением

 

Powered by ExBB FM 1.0 RC1