Supervisork

Рейтинг
60
Регистрация
27.02.2007
dvaes:
чем вам мой вариант то не нравится? в каких интересно случаях он не работает
можно правда его и так записать
preg_replace("'[\w]*".$search."[\w]*'i", "<b>\\0</b>", $text);
но разницы особой нету

Мне нравится вариант

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"

но реально, там нужно бы еще пол миллиона символов указать, которые не входят в слово. Например, знак процента, решетку и т. д. Есть ли более лаконичный вариант?

Шелдон:
$result2=preg_replace("/".$search.".*\s/i", "<b>\\0</b>", $text);

этот вариант ищет до пробела (при чем, только в конце). А слово-то может заканчиваться точкой, или запятой. Вот, что получится:

<?php

$text="Нужно, найти, заданный, фрагмент";

$search="дан";

$result2=preg_replace("/".$search.".*\s/i", "<b>\\0</b>", $text);

?>

Результат в обоих случаях: "Нужно, найти, за<b>данный,</b> фрагмент".

То же не совсем то, что нужно :(

Раз можешь любой скрипт написать, блесни мастерством и подскажи: Нужно найти заданный фрагмент текста и поместить его в заданные теги.

К примеру, есть текст: "Нужно найти заданный фрагмент". Искомый фрагмент "Дан". Теги <b> и </b>. Есть варианты:

<?php

$text="Нужно найти заданный фрагмент";

$search="Дан";

$result1=eregi_replace($search, "<b>\\0</b>",$text);

$result2=preg_replace("/".$search."/i", "<b>\\0</b>", $text);

?>

Результат в обоих случаях: "Нужно найти за<b>дан</b>ный фрагмент".

А как лучше сделать, чтоб выделялось слово целиком? То есть, чтоб получалось так: "Нужно найти <b>заданный</b> фрагмент"? С учетом того, что слово может заканчиваться не только пробелом, но и знаком припинания, переносом строки и прочим.

topmedia:
А для чего вы используете кашу из таблиц и DIVов? И в чем гениальность? В пиаре вашей студии?

1) Гениальность в том, что я умею отличить двигатель машины от её кузова ;)

2) Какое отношение таблицы имеют к Системе Управления Контентом?

3) Замечания, очевидно, адресованы к верстке какого-то конкретного сайта. Что смущает? На каком сайте?

Посмотри на сайт дизайн-студии, там все на моем движке. Программисты, которые осознали возможности движка, в легком ступоре. Они поняли - все гениальное просто :) Если заинтересует, шли письма

вот тебе информация к размышлению. Захочешь, найдеш в ней хороший движек.

SergejDergatsjev:
Респект, сразу видно человека знающего толк в дезайне. Ясно что любите доводить дело до конца.

Сразу видно человека, которому лень писать собственные 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) ;

}

}

примерно так.

Всего: 186