Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: вставка в строку доп тегов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Antonim
Отправлено: 06 Апреля, 2009 - 11:12:06
Post Id


Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Окт. 2008  


Помог: 1 раз(а)

[+]


Доброго времени суток. Столкнулся с небольшой трудностью.. хотя на первый взгляд показалось просто, но вот что-то не получается.

Значит мне нужно выделить в строке жирным подстроки, которые искал пользователь.

Сначала сделал вот так:

$t[0] = str_ireplace ("$d","<b>$d</b>",$t[0]); где $t[0] - строка в которой заменяем , а $d - то, что ищет пользователь.

Но получается из строки

"Мама мыла раму"

с запросом например "мам" эта функция возвращает

"<b>мам</b>а мыла раму"

не подскажите как поступить.. сначала думал делать по strpost, но это перебор получится море функций. Наверное многи сталкивались с такой проблемой...
 
 Top
Гость
Отправлено: 06 Апреля, 2009 - 11:56:17
Post Id


УДАЛЁН










Регулярка такая получится типа s/(\S*?$t\S*?)/<b>$1</b>/gs;
Сами переведете на PHP Улыбка
 
 Top
UA.ProG
Отправлено: 06 Апреля, 2009 - 15:02:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Июль 2008  
Откуда: Николаев,Украина


Помог: 0 раз(а)

[+]


JustUserR пишет:
Регулярка такая получится типа s/(\S*?$t\S*?)/<b>$1</b>/gs;


Зачем использовать регулярку когда мы ищем простой текст?

Antonim пишет:
$t[0] = str_ireplace ("$d","<b>$d</b>",$t[0]); где $t[0] - строка в которой заменяем , а $d - то, что ищет пользователь.


У тебя просто скорее всего не правильный вывод результат


-----
--------------MoZG--------------
---------Google спасёт мир------
 
 Top
zeit
Отправлено: 06 Апреля, 2009 - 15:04:26
Post Id


Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




$str = preg_replace("/((^|[^а-яa-z]){$word}([^а-яa-z]|$))/i", "<strong>\\1</strong>", $str);
$word - слово для поиска в строке $str

(Отредактировано автором: 06 Апреля, 2009 - 17:19:14)

 
 Top
Вездеход
Отправлено: 06 Апреля, 2009 - 15:07:52
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




бугага )
а я оригинальнее Радость Хорошо Хорошо

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $STRING         ="Мама мыла раму";
  4. $TEMPLATE       ="Мам";
  5. $RESULT         ="";
  6. $TAG_START      ="<b>";
  7. $TAG_END        ="</b>";
  8.  
  9. $STRING_SWC     =str_word_count($STRING, 2);                    // получаем массив со словами для обаботки
  10.  
  11. foreach($STRING_SWC as $val) {
  12.         if(stripos($STRING, $TEMPLATE)===false) {
  13.                 $RESULT.=$val." ";
  14.         }
  15.         else {
  16.                 $RESULT.=$TAG_START.$val.$TAG_END;
  17.         }              
  18. }
  19.  
  20. if(substr($RESULT, -1)==" " and substr($STRING, -1)!=" ") {
  21.         $RESULT=substr($RESULT, 0, -1);
  22.         $RESULT.=substr($STRING, -1);
  23. }
  24. ?>
  25.  


на работоспособность не проверял. =)

(Отредактировано автором: 06 Апреля, 2009 - 15:10:04)



-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Antonim
Отправлено: 06 Апреля, 2009 - 15:52:35
Post Id


Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Окт. 2008  


Помог: 1 раз(а)

[+]


UA.ProG пишет:

У тебя просто скорее всего не правильный вывод результат


как это непральный?

$t[0] = str_ireplace ("$d","<b>$d</b>",$t[0]); где $t[0] - строка в которой заменяем , а $d - то, что ищет пользователь.

Проблема в том, что заменяется содержимое строки например "МАМА МЫЛА РАМУ", а в поиск вбили "мама" и получим "мама МЫЛА РАМУ" регистр не контролируемый получается Недовольство, огорчение Недовольство, огорчение Недовольство, огорчение

мне ж нужно без учета регистра искать, а выделять то, что в строке с тем регистром, который там был!

Вот хотел найти позиции входа подстроки в строку и "вписать" в строку данные, НО не знаю как "вставить" св строку данные на определенное место ?? может кто подскажет?

(Отредактировано автором: 06 Апреля, 2009 - 15:57:17)

 
 Top
Вездеход
Отправлено: 06 Апреля, 2009 - 16:08:20
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




Antonim
тебе уже 2 варианта предложили...
читай внимательнее


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Antonim
Отправлено: 06 Апреля, 2009 - 17:14:31
Post Id


Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Окт. 2008  


Помог: 1 раз(а)

[+]


Вездеход пишет:
Antonim
тебе уже 2 варианта предложили...
читай внимательнее


оба не работают.
 
 Top
zeit
Отправлено: 06 Апреля, 2009 - 17:19:38
Post Id


Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




Вот, проверил:

<?php
$str = "мама мыла раму";
print $str . "<br />";
$word = "мама";
$str = preg_replace("/((^|[^а-яa-z]){$word}([^а-яa-z]|$))/i", "<strong>\\1</strong>", $str);

print $str;

?>
 
 Top
Antonim
Отправлено: 06 Апреля, 2009 - 17:34:08
Post Id


Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Окт. 2008  


Помог: 1 раз(а)

[+]


если вы введете не мама мыла раму, а мамантиха мыла раму, то работать не будет
 
 Top
Гость
Отправлено: 06 Апреля, 2009 - 18:01:35
Post Id


УДАЛЁН










Цитата:
Зачем использовать регулярку когда мы ищем простой текст?
Так нам надо не просто текст заменить а НАЙТИ СЛОВО - то есть набор символов между двумя пробельными символами и выделить се слово имеющее искомое вхождение
 
 Top
Antonim
Отправлено: 06 Апреля, 2009 - 18:08:16
Post Id


Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Окт. 2008  


Помог: 1 раз(а)

[+]


JustUserR пишет:
Так нам надо не просто текст заменить а НАЙТИ СЛОВО - то есть набор символов между двумя пробельными символами и выделить се слово имеющее искомое вхождение


как раз нужно найти просто текст, но не заменить его, а справа и слева от этого текста поставить <b> и </b> соответственно
 
 Top
zeit
Отправлено: 06 Апреля, 2009 - 18:54:37
Post Id


Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




<?php

$str = "мамантиха мыла раму";
print $str . "<br />";

$word = "мама";
$str = preg_replace("/({$word})/i", "<b>\\1</b>", $str);

print $str;

?>
 
 Top
Antonim
Отправлено: 07 Апреля, 2009 - 10:01:48
Post Id


Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Окт. 2008  


Помог: 1 раз(а)

[+]


zeit пишет:

$str = preg_replace("/({$word})/i", "<b>\\1</b>", $str);


Агромное спасибо. Все работает как надо.


Для тех кто будет то же делать добавите перед preg_replace стьроку:

setlocale(LC_ALL, 'ru_RU.CP1251');

для того, чтобы поиск был регистронезывисимый.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB