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

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

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

 

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

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

тема: Не могу обработать тег
 
 автор: cernos   (13.02.2006 в 23:35)   письмо автору
 
 

Я обрабатываю теги [img][/img регулярным выражением, внутри которых хранится id файла!
Т.е.

[img]10[/img]

Мне необходимо вырезать id и найти используя этот id, название файла в БД!

Как мне ето осуществить, пытался таким способом но ничо не получилось:

$text = preg_replace("#\[img\](.+)\[\/img\]#isU",'<center><img src="files/'.mysql_result(mysql_query("select filename from w_files where id_file=\\1"),0).'"></center>',$text);


Заранее благодарен

   
 
 автор: PantiL   (13.02.2006 в 23:47)   письмо автору
 
   для: cernos   (13.02.2006 в 23:35)
 


<?php
//Вот таким образом я получил id файла из тега
$text "[img]10[/img]";
ereg("\[img\]([0-9]*)\[/img\]"$text$regs);
echo 
$regs[1];//Вот это и есть id
?>

Ну а Вы чего-то намудрили, не надо все пихать в одну строчку, можно легко запутаться.

   
 
 автор: cernos   (15.02.2006 в 10:19)   письмо автору
 
   для: PantiL   (13.02.2006 в 23:47)
 

Дело в том что мне необходимо не просто вытащить id а заменять го на лету, т.е.
заменять тег [img10[/img] на
тег <img src="тут вытащенный адрес из БД">

Помогите плиз...

   
 
 автор: PantiL   (15.02.2006 в 11:35)   письмо автору
 
   для: cernos   (15.02.2006 в 10:19)
 

Ну а зачем вам такие извращения?
Получили мы id - см. пример выше. Ну а потом втавьте его в запрос к базе данных. А результат полученный из базы вставьте в ту строку которую хотите получить.
Ну получится в несколько строк, ну и что - зато код будит более читаем

   
 
 автор: cheops   (15.02.2006 в 13:42)   письмо автору
 
   для: cernos   (15.02.2006 в 10:19)
 

Для этого обычно испльзуют функцию обратного вызова
<?php
  $pattern 
"#\[img\](.+)\[\/img\]#isU";
  
$text preg_replace($pattern,"insert_image",$text);

  
// функция обратного вызова
  
function insert_image($matches
  {
    
$query "select filename from w_files where id_file=$matches[1]";
    
$img mysql_query($query);
    if(!
$img) exit(mysql_error());
    
$value mysql_result($img,0);

    return 
'<center><img src="files/'.$value.'"></center>';
  }
?>

   
 
 автор: cernos   (16.02.2006 в 12:23)   письмо автору
 
   для: cheops   (15.02.2006 в 13:42)
 

Спасибо!

   
Rambler's Top100
вверх

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