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

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

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

 

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

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

тема: Выделить фразу тэгом <b></b>
 
 автор: Artemy   (06.04.2006 в 17:28)   письмо автору
 
 

Задача такая, есть текст.
Культ джайнизма включает в себя поклонение Махавире и другим тиртханкарам, поэтому веданта откровенна. Ато джива осмысленно творит из ряда вон выходящий закон исключённого третьего, хотя в официозе принято обратное. Искусство, как следует из вышесказанного, контролирует знак, изменяя привычную реальность. Гегельянство, конечно, творит язык образов, при этом буквы А, В, I, О символизируют соответственно общеутвердительное, общеотрицательное,  частноутвердительное и частноотрицательное суждения. Деонтология амбивалентно принимает во внимание трагический дуализм, открывая новые горизонты. 


Нужно рег. выражение, которое бы выделяло слово или фразу тэгом <b></b>, причем если оно встречается не однократно в тексте.

Т.е. чтоб результат был такой
Культ джайнизма включает в себя поклонение <b>Махавире и другим</b> тиртханкарам, поэтому веданта откровенна. Ато джива осмысленно творит из ряда вон выходящий закон исключённого третьего, хотя в официозе принято обратное. Искусство, как следует из вышесказанного, контролирует знак, изменяя привычную реальность. Гегельянство, конечно, творит язык образов, при этом буквы А, В, I, О символизируют соответственно общеутвердительное, общеотрицательное, <b>Махавире и другим</b>  частноутвердительное и частноотрицательное суждения. Деонтология амбивалентно принимает во внимание трагический дуализм, открывая новые горизонты. 

   
 
 автор: cheops   (07.04.2006 в 00:29)   письмо автору
 
   для: Artemy   (06.04.2006 в 17:28)
 

Хм... а помоему, тут можно без регулярных выражений обойтись
<?php 
  $text 
'Культ джайнизма включает в себя поклонение Махавире и другим тиртханкарам, поэтому веданта откровенна. Ато джива осмысленно творит из ряда вон выходящий закон исключённого третьего, хотя в официозе принято обратное. Искусство, как следует из вышесказанного, контролирует знак, изменяя привычную реальность. Гегельянство, конечно, творит язык образов, при этом буквы А, В, I, О символизируют соответственно общеутвердительное, общеотрицательное, Махавире и другим  частноутвердительное и частноотрицательное суждения. Деонтология амбивалентно принимает во внимание трагический дуализм, открывая новые горизонты.';
  
$text str_replace("Махавире и другим""<b>Махавире и другим</b>"$text);
  echo 
$text;
?>

   
 
 автор: Artemy   (07.04.2006 в 10:40)   письмо автору
 
   для: cheops   (07.04.2006 в 00:29)
 

А если фраза не "Махавире и другим", а "хавире и друг". Нужно выделить ее до ближайщих пробелов.

   
 
 автор: Artemy   (07.04.2006 в 12:04)   письмо автору
 
   для: Artemy   (07.04.2006 в 10:40)
 

Если кому интересно, вот функция, которая делает, то что я хотел.

<?PHP
 
function chooseText($str,$content){
   if(
$str == $content) return '<b>'.$str.'</b>';
   
$str_ar explode(' ',trim($str));
   
//Разбиваем строку в массив
   
$content_ar str_split($content);
   
//Бежим по строке
   
for($i=0;$i<sizeof($str_ar);$i++){
     if(empty(
$str_ar[$i])) continue;
     
//Ищем начало слова
     
$a strpos(strtolower($content),strtolower($str_ar[$i]),$i);
     for(
$j=$a;$j>$a-10 && $j>=0;$j--){
       if(
$j == || $content_ar[$j-1] == " " || ord($content_ar[$j-1]) == 60){
         
$content_ar[$j] = '<b>'.$content_ar[$j];
         break;
       }
     }
     
//Ищем конец слова
     
$a strpos($content,$str_ar[$i],$i)+strlen($str_ar[$i]);
     for(
$j=$a;$j<$a+20;$j++){
       if(empty(
$content_ar[$j]) || $content_ar[$j] == " " || $content_ar[$j] == "," || $content_ar[$j] == "." || $content_ar[$j] == "!" || $content_ar[$j] == "?" || $content_ar[$j] == ":" || $content_ar[$j] == ";"){
         
$content_ar[$j] = '</b>'.$content_ar[$j];
         break;
       }
     }
   }
   return 
implode('',$content_ar);
 }

 
//Пример работы
 
print chooseText("   ра  ри","раз два три"); //<b>раз</b> два <b>три</b>
 
print chooseText("два ","раз два три"); //раз <b>два</b> три
 
print chooseText("раз два три","раз два три"); //<b>раз два три</b>
?>

   
 
 автор: Trianon   (07.04.2006 в 10:45)   письмо автору
 
   для: cheops   (07.04.2006 в 00:29)
 

Беглым взглядом я нашел слова из, и, при . Внимательно разглядывать нечто очень смахивающее на subliminal message желания не возникло. :-)

   
Rambler's Top100
вверх

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