|
|
|
| но не включая в результат поиска окружающие его угловые скобки. заранее спс. | |
|
|
|
|
|
|
|
для: azusr
(26.01.2009 в 00:02)
| | >найти имя тега HTML
>но не включая в результат поиска окружающие его угловые скобки. заранее спс.
А что подрузамевается под именем тега HTML?
Если в тексте встретиться к примеру <ya> это будет тег HTML? | |
|
|
|
|
|
|
|
для: AcidTrash
(26.01.2009 в 21:53)
| | извините я не правильно задал вопрос. точнее мне нужен поиск в бд и подсветка совпадений. и по моему это надо делать с регулярными выражениями. вот потому я сюда и обращаюсь.
значит так. через переменную $_GET['search'] получаю искомую фразу, отфильтровываю. далее ищу те фразы которые не входят в угловые скобки. пример:
урл: ?search=img
строка1: img test img
строка2: <img src="img.gif" alt="" /> test
строка3: img <img src="img.gif" alt="" /> test
в результате совпадение есть в строках 1 и 3. строка1 понятно почему. в строке 2 img есть но так как оба находятся внутри угловых скобках срока2 не включается. и в строке 3 только одно совпадение, потому что остальные две находятся внутри угловых скобках.
и точно также при подсветке. если фраза не находится внутри угловых скобках то надо ее подсвечивать.
теперь мне нужен шаблон для re который найдет те фразы которые не входят в угловые скобки. | |
|
|
|
|
автор: xx7 (27.01.2009 в 19:33) |
|
|
для: azusr
(27.01.2009 в 00:36)
| | Лучше-бы попробовать подсветить слова до того как к тексту полученному из базы добавляются теги.
, если есть такая возможность.
а так легче найти теги , чем то что не в них.
можно просто сделать
$txt = preg_replace_callback('#(<)[^>]*>\s*|[^<]+#', 'slova', $txt);
А в функции slova() возвращать просто всё совпадение $match[0] если было $match[1],
или например return preg_replace('#\b'. preg_quote($searchword) .'\b#', '<b>$0</b>', $match[0])
, если не было $match[1] | |
|
|
|
|
|
|
|
для: xx7
(27.01.2009 в 19:33)
| | спс вам.
function highlight($text, $query)
{
preg_match_all('/(<)[^<>]*>\s*|[^<>]+/is', $text, $matches, PREG_SET_ORDER);
$text = '';
for ($i = 0; isset($matches[$i]); $i++)
$text .= !isset($matches[$i][1])? preg_replace('/'.preg_quote($query, '/').'/is', '<span class="highlight">$0</span>', $matches[$i][0]): $matches[$i][0];
return $text;
}
|
| |
|
|
|