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

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

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

 

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

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

тема: text
 
 автор: Mootch   (14.04.2006 в 22:12)   письмо автору
 
 

как найти текст заключенный в тегb <b></b> в переменной $text = "<b>text</b>"; ?

   
 
 автор: cheops   (15.04.2006 в 01:03)   письмо автору
 
   для: Mootch   (14.04.2006 в 22:12)
 

С найденым текстом что нужно сделать:
1) заменить на новый
2) удалить
3) поместить его в переменную?

   
 
 автор: Mootch   (15.04.2006 в 01:55)   письмо автору
 
   для: cheops   (15.04.2006 в 01:03)
 

поместить в переменную.

   
 
 автор: cheops   (15.04.2006 в 12:35)   письмо автору
 
   для: Mootch   (15.04.2006 в 01:55)
 

Можно поступить следующи образом
<?php 
  $text 
" в переменной $text = <b>text</b>; ?"

  
$pattern "|<b>(.+?)</b>|iU";
  
preg_match($pattern,$text,$out);
  
$bbCode $out[1];
  echo 
$bbCode;
?>

   
 
 автор: Mootch   (15.04.2006 в 13:00)   письмо автору
 
   для: cheops   (15.04.2006 в 12:35)
 

спасибо! немного непонятно - что за массив $out ?В него же должны записываться совадения по маске. Если переделать код:

<?php 
  $text 
" В <b>переменной</b> text = <b>text</b>; ?";

  
$pattern "|<b>(.+?)</b>|iU"
  
preg_match($pattern,$text,$out); 
  
$bbCode $out[1]; 
  echo 
$bbCode
?>


Не работает :(

   
 
 автор: cheops   (15.04.2006 в 22:48)   письмо автору
 
   для: Mootch   (15.04.2006 в 13:00)
 

Вообще говоря странно - попробуйте такое регулярное выражение, возможно оно больше подойдёт
<?php 
  $text 
" В <b>переменной</b> text = <b>text</b>; ?"

  
$pattern "|<b>([^<]+)</b>|iU"
  
preg_match($pattern,$text,$out); 
  
$bbCode $out[1]; 
  echo 
$bbCode
?>

   
 
 автор: Mootch   (15.04.2006 в 23:23)   письмо автору
 
   для: cheops   (15.04.2006 в 22:48)
 

о! работает! спасибо :)

   
 
 автор: Mootch   (16.04.2006 в 00:56)   письмо автору
 
   для: cheops   (15.04.2006 в 22:48)
 

а можно, что бы в $out хранился полнуй список "находок" ? А то сейчас там только первая.

отредактировано:
пишем вместо preg_match preg_match_all

   
 
 автор: Mootch   (21.04.2006 в 15:16)   письмо автору
 
   для: cheops   (15.04.2006 в 22:48)
 

Как сделать, что бы искалась подстрочка строчка, ограниченная <b> </b> и которая не содержит "<b>".
Здесь:

  $pattern = "|<b>([^<b>]+)</b>|iU";


Строчка не должна содержать "<", "b", ">". Т.е. если в строке будет просто "b ", то preg_match её пропустит. Надо что бы фильтр был строго по "<b>". Подскажите пожалуйста, как это сделать!

   
 
 автор: cheops   (22.04.2006 в 01:02)   письмо автору
 
   для: Mootch   (21.04.2006 в 15:16)
 

Для этого можно воспользоваться регулярным выражением вида
 $pattern = "|<b>(.+)</b>|iU";

   
 
 автор: Mootch   (22.04.2006 в 14:27)   письмо автору
 
   для: cheops   (22.04.2006 в 01:02)
 

не работает. в $out записывается пустой массив.

   
 
 автор: Mootch   (23.04.2006 в 18:02)   письмо автору
 
   для: Mootch   (22.04.2006 в 14:27)
 

если вместо <b> искать <info> - что-то изменится в алгоритме?

   
 
 автор: cheops   (23.04.2006 в 23:43)   письмо автору
 
   для: Mootch   (23.04.2006 в 18:02)
 

Собственно ничего - просто нужно будет заменить тэги.

   
Rambler's Top100
вверх

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