функция, которая "вырезает" из текста фразу, где встречается это слово

DeltaDIM

Новичок
функция, которая "вырезает" из текста фразу, где встречается это слово

Здравсвуйте!
Есть небольшой текст. Допустим, какая-то статья. И нужно при помощи ПХП найти какое-либо слово или фразу. Затем в результатах показать небольшой кусочек текста, где это слово встречается, и выделить цветом искомое слово.
Это уже конечно похоже на целый скрипт поиска. Но мне нужна лишь функция, которая "вырезает" из текста фразу, где встречается это слово.
Я пробовал через eregi_replace("Слово", "<b><font color=red>\\0</font></b>", $str)
Эта функция выделят цветом искомые слова, но при этом она выводит весть текст. А мне нужно, только небольшая часть. К примеру, ... какой-то текст "Слово" опять текст...
 

Фанат

oncle terrible
Команда форума
[m]strpos[/m]
[m]substr[/m]
спасут отца русской демогратии.
Если у него есть хоть капля алгоритмического мышления.
 

DeltaDIM

Новичок
Но у меня в тексте несколько раз встерчается искомое слово, а функция strpos ищет только первое.
 

Фанат

oncle terrible
Команда форума
неправда.
во-первых, оно прекрасно себе ищет сколько угодно - надо только документацию читать
во-вторых, ты ТЫ И НЕ ГОВОРИЛ, что надо искать несколько.
 

Фанат

oncle terrible
Команда форума
ту так кто тебе мешает в цикле найти позиции всех слов и вырезать из текста по кусочку вокруг?
 

sergo

Guest
можно так, например:

PHP:
<?php

function highlight ($text, $word, $distance_before, $distance_after)
{
	$regexp = '/(?ims)(\w+\W+){0,'.$distance_before.'}'.
		$word.'(\W+\w+){0,'.$distance_after.'}/';
	$m= array('');
	if (preg_match_all ($regexp, $text, $m))
	{
		foreach ($m[0] as $key => $str)
		{
			$m[$key] = str_replace ($word, '<b>'.$word.'</b>', $m[$key]);
		}
	}
	return $m[0];
}

$text = 'Здравсвуйте! Есть небольшой текст. 
Допустим, какая-то статья. 
И нужно при помощи ПХП найти какое-либо слово или фразу. 
Затем в результатах показать небольшой кусочек текста, 
где это слово встречается, и выделить цветом искомое слово.
Это уже конечно похоже на целый скрипт поиска. 
Но мне нужна лишь функция, которая "вырезает" из текста фразу, 
где встречается это слово.
';


$matches = highlight ($text, 'слово', 3, 3);

foreach ($matches as $match)
{
	echo '...'.$match.'...<br>';
}
 
Сверху