Мне нравится вариант
preg_replace('\w*'.$search.'\w*i', "<b>\\0</b>", $text);
как вполне лаконичный. Но он почему-то не работает :(
так что, я решил останоситься на таком:
preg_replace("/[а-яА-Яa-zA-Z\-]*".$search."[а-яА-Яa-zA-Z\-]*/i", "<b>\\0</b>", $text);
Кстати, кто-нить подскажет, почему на некоторых серверах регистронезависимость не работает? И если, к примеру, $search набран маленькими буквами, а в тексте оно же написано БОЛЬШИМИ, preg_replace их не находит?
то есть, только прямым перечислением?
Все подсказанные варианты никуда не годятся. В лучшем случае, они ищут по пробел. А как же знаки припинания? Вот, что использую я сейчас:
"/[^\.,\?:!'\s\x34\x93]*".$highlight."[^\.,\?:!'\s\x34\x93]*/i"
но реально, там нужно бы еще пол миллиона символов указать, которые не входят в слово. Например, знак процента, решетку и т. д. Есть ли более лаконичный вариант?
этот вариант ищет до пробела (при чем, только в конце). А слово-то может заканчиваться точкой, или запятой. Вот, что получится:
<?php
$text="Нужно, найти, заданный, фрагмент";
$search="дан";
$result2=preg_replace("/".$search.".*\s/i", "<b>\\0</b>", $text);
?>
Результат в обоих случаях: "Нужно, найти, за<b>данный,</b> фрагмент".
То же не совсем то, что нужно :(
Раз можешь любой скрипт написать, блесни мастерством и подскажи: Нужно найти заданный фрагмент текста и поместить его в заданные теги.
К примеру, есть текст: "Нужно найти заданный фрагмент". Искомый фрагмент "Дан". Теги <b> и </b>. Есть варианты:
$text="Нужно найти заданный фрагмент";
$search="Дан";
$result1=eregi_replace($search, "<b>\\0</b>",$text);
$result2=preg_replace("/".$search."/i", "<b>\\0</b>", $text);
Результат в обоих случаях: "Нужно найти за<b>дан</b>ный фрагмент".
А как лучше сделать, чтоб выделялось слово целиком? То есть, чтоб получалось так: "Нужно найти <b>заданный</b> фрагмент"? С учетом того, что слово может заканчиваться не только пробелом, но и знаком припинания, переносом строки и прочим.
1) Гениальность в том, что я умею отличить двигатель машины от её кузова ;)
2) Какое отношение таблицы имеют к Системе Управления Контентом?
3) Замечания, очевидно, адресованы к верстке какого-то конкретного сайта. Что смущает? На каком сайте?
Посмотри на сайт дизайн-студии, там все на моем движке. Программисты, которые осознали возможности движка, в легком ступоре. Они поняли - все гениальное просто :) Если заинтересует, шли письма
вот тебе информация к размышлению. Захочешь, найдеш в ней хороший движек.
Сразу видно человека, которому лень писать собственные 5 строк и, который по этой причине готов тулить чужие мегабайты кода.
Это, конечно, мое мнение. Кстати, с описанием товаров можно было бы поступить иначе: подгружать нужное, а не вписывать все сразу (если товаров много, помещать на страницу описание всех товаров накладно). Если такой вариант интересен, используй ajax. В рабочем примере внизу, замени событие для выдачи результата с сабмита на онченч
Supervisork добавил 02.09.2009 в 11:50
Вспомнил: делал подобные приблуды сюда http://supernails.de/kontakt/zayavka.html и сюда http://www.studio-tvoystyle.ru/zayzvka.html
про ячейки ничё непонятно. А если
каталог_с_шапкой/имя_файла=адрес_страницы
то:
$marray=file("файл.txt"); // считаем файл где расписано соответствие
for($i=0; $i < count($marray); $i++) {
// перебросим строку в переменные
@list($template, $adrespage)=explode("=",trim($marray[$i]));
if ($adrespage==$_SERVER['REQUEST_URI']){// если адрес страницы из файла соответствий совпал с запрашиваемым
include($_SERVER['DOCUMENT_ROOT'].$template) ;
}
примерно так.