[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разукрасить последнее слово
panacea
Всем привет.

Надо разукрасить (изменить цвет шрифта) последнее слово в предложении.

Как это лучше и проще сделать?



Спустя 7 минут, 5 секунд (7.04.2011 - 19:29) Mirexzpalich написал(а):
Ну... определи вхождение последнего пробела в строку1.... Отрежь от строки1 строку2 с позиции этого пробела до конца строки1.... И разукрашивай строку2 как хочешь. А вывод:

echo $str1.' '.$str2;

Спустя 4 минуты, 14 секунд (7.04.2011 - 19:34) panacea написал(а):
Сложно как-то. Можно по-подробнее. Как определить вхождение последнего пробела?

Спустя 1 минута, 55 секунд (7.04.2011 - 19:35) DmitryOpalev написал(а):
Что-то вроде этого:
$text = preg_match_all("#(\w*)#", $text, $word);
$count = count($text);
echo $text[$count]; //Должно вернуть последнее слово

Но если честно, я не уверен в регулярке

Спустя 7 минут, 4 секунды (7.04.2011 - 19:43) panacea написал(а):
Это надо вырезать, обрабатывать и приконкатинировать снова? Я правильно понял, Дмитрий?

Спустя 5 минут, 36 секунд (7.04.2011 - 19:48) alex12060 написал(а):
Допустим, у тебя есть строка:
Привет, у меня есть тут слова
Получается, слова это:

Привет
меня
есть
тут
слова

Я прав?

Спустя 6 минут, 54 секунды (7.04.2011 - 19:55) panacea написал(а):
Да. Прав. Только У забыл. Предложений несколько и слов в предложениях разное количество. Слова разделены пробелом, знаков препинаний нет. Мне надо последнее слово разукрасить. Например <fontами или еще как нибудь....

Спустя 27 минут, 32 секунды (7.04.2011 - 20:23) alex12060 написал(а):
На быструю руку накидал.


<?php

error_reporting(E_ALL & ~ E_NOTICE);
header("Content-type: text/html; charset=windows-1251");

$key = preg_split("/[\s,]+/", "hypertext language, programming is a null");

//echo $key;

function LastWord($arr) {
if (!is_array($arr)) return false;

for($i=0; $i<sizeof($arr); ++$i) {

if (strlen($arr[$i]) > 1) {
$tmp = '<font color="green">'.substr($arr[$i], -1).'</font>';

$str[] = substr($arr[$i], 0, strlen($arr[$i]) - 1).$tmp;
} else {
$str[] = $arr[$i];
}

}


return $str;
}

//$array = array_map("LastWord", $key);
$arr = LastWord($key);

foreach ($arr as $str) {
echo $str.'<br />';

}
die();
?>

Спустя 1 час, 35 минут, 12 секунд (7.04.2011 - 21:58) panacea написал(а):
Оху Ё...у меня разрыв шаблона...чинюсь....но за работу плюсик поставил все равно...спасибо.

Спустя 3 минуты, 25 секунд (7.04.2011 - 22:01) Mirexzpalich написал(а):
А так красивее =)


$str = "Привет! Мы будем разукрашивать МЕНЯ.";
$slovo = strrchr($str,' ');
$str = str_replace($slovo,'',$str);
$slovo = '<font color="red">'.$slovo.'</font>';
$str .=' '.$slovo;
echo $str;

Спустя 41 минута, 13 секунд (7.04.2011 - 22:42) panacea написал(а):
О, это уже по проще будет, но работает не понятно как-то. вставляет куда попало теги. Не пойму в чем причина. Может это не пробел, а \n или \r?

Спустя 2 минуты, 22 секунды (7.04.2011 - 22:45) Mirexzpalich написал(а):
Так.... покажи как код.

Спустя 10 минут, 52 секунды (7.04.2011 - 22:56) panacea написал(а):
Пляха муха не получаеццо...вот строка
Нал.EUR СПб.

23:33
40.253
40.456 <font color="green"></font>
в конце еще какой то пробел, хотя я строчку trim ом лечил...странно
так тоже пытал $slovo = strrchr($str,'\n\r'); Не помогает

Спустя 4 минуты, 9 секунд (7.04.2011 - 23:00) Mirexzpalich написал(а):
Чет я не вкуриваю....
Так. напиши что у тебя на входе. И что должно быть на выходе. строки возьми в кавычки

Спустя 12 минут, 3 секунды (7.04.2011 - 23:12) panacea написал(а):
Эх...Обманул я всех, тут не пробел разделитель, а видимо символ новой строки. Но это не должно сильно сказаться на производительности функции.

Вход:
"Нал.EUR СПб.

23:33
40.253
40.456"

Выход сейчас:
"Нал.EUR СПб.

23:33
40.253
40.456 <font color="green"></font>"

Должно быть так:
"Нал.EUR СПб.

23:33
40.253
<font color="green">40.456</font>"

Спустя 1 минута, 56 секунд (7.04.2011 - 23:14) Mirexzpalich написал(а):
Тада в $slovo = strrchr($str,''); сделай перевод строки. Самый простой способ тупо нажать кнопочку ENTER

$str = "Привет!
Мы будем
разукрашивать
МЕНЯ."
;
$slovo = strrchr($str,'
'
);

$str = str_replace($slovo,'',$str);
$slovo = '<font color="red">'.$slovo.'</font>';
$str .=$slovo;
echo $str;


Но правильнее :
$slovo = strrchr($str,"\r\n");
если конечно у тебя Windows

Спустя 13 минут, 50 секунд (7.04.2011 - 23:28) panacea написал(а):
Да хрюша. И так и сяк попробывал. Результат один
"Нал.EUR СПб.

00:17
40.163
40.621<font color="red"></font>"
Не знаю даже в чем дело...вот код:

$str=trim(strip_tags($str));
$slovo = strrchr($str,"\r\n");
$str = str_replace($slovo,'',$str);
$slovo = '<font color="'.$rgb.'">'.$slovo.'</font>';
$str .=$slovo;

Спустя 9 минут, 17 секунд (7.04.2011 - 23:37) Mirexzpalich написал(а):
Блин... Озадачил... У меня все отлично работает.
А так $slovo = strrchr($str,"\r");

Спустя 2 минуты, 19 секунд (7.04.2011 - 23:39) panacea написал(а):
О, блин ща поменял в Нотпаде на юниксовскую новую строку 0Ah и сделал по первому варианту и пошло, нашелся все таки последний "пробел". До этого досовская стояла 0Dh и с ней не искалось почему то.

Спустя 14 минут, 32 секунды (7.04.2011 - 23:54) panacea написал(а):
Вообщем вроде работает и ладно. Всем плюсики поставил. Отличная работа. Огромное спасибо.

Спустя 9 часов, 34 минуты, 11 секунд (8.04.2011 - 09:28) dima4321 написал(а):
http://php.su/functions/?str-word-count

потом count($array);

потом нужное слово $slovo=count($array)-1

потом

http://php.su/functions/?str-replace

если слово вдруг в тексте идет несколько раз тогда еще пару функций.))

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.