Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Прописные/строчные буквы, как с этим бороться? (Новый)
Author Message
Новый
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Aug 12, 2003 5:10 pm ()
   Post subject: Прописные/строчные буквы, как с этим бороться?
Reply with quote

Подскажите, кто знает.
Мне нужно проверить предложение по шаблону, но при этом не учитывать, какие буквы прописные или строчные.
А затем если слово совпадает, выделить его жирным шрифтом. Слово для шаблона, написано на русском языке.
Вот, что я сделал (не работает), что здесь нужно изменить?
Quote:
if ($name=~/(.*)$sss(.*)/i){
$name=~s/$sss/<b>$sss<\/b>/i;
}
Back to top
Ant
Сотрудник «Лаборатории»



Joined: 17 Jun 2003
Posts: 6840
Карма: 132
   поощрить/наказать


PostPosted: Tue Aug 12, 2003 6:47 pm (спустя 1 час 36 минут)
   Post subject:
Reply with quote

Ни че не понимаю, как это не работает? У меня все чики-пуки. Хотя код написан, мягко говоря, неправильно. Наверно Вам надо заменить ВСЕ совпадения на жирный текст??? В таком случае код не работает так как заменяется ТОЛЬКО первое слово, совпавшее с шаблоном.

Делается эта операция довольно-таки просто:
Code (perl): скопировать код в буфер обмена
$name =~ s (www.perldoc.com/perl5.6/pod/func/s.html)/$sss/<b>$sss<\/b>/ig;
Back to top
View user's profile Send private message Send e-mail
Enilatiar
Участник форума



Joined: 09 Jun 2003
Posts: 690
Карма: 24
   поощрить/наказать


PostPosted: Tue Aug 12, 2003 7:55 pm (спустя 1 час 7 минут)
   Post subject:
Reply with quote

Code (perl): скопировать код в буфер обмена
$name =~ s|\b($sss)\b|<b>$1</b>|ig;
\b - граница слова.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Aug 12, 2003 11:21 pm (спустя 3 часа 26 минут)
   Post subject:
Reply with quote

Возможно, придется еще повозиться с локалью, если будут проблемы с русскими буквами. Посмотрите в Поиске по setlocale.
Back to top
View user's profile Send private message Send e-mail
Новый
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed Aug 13, 2003 8:56 am (спустя 9 часов 35 минут)
   Post subject:
Reply with quote

Все выше приведенные примеры, работают только с английским алфавитом и не один с русским.
Мне нужно заменить одно русское слово, на тоже слово только выделенное жирным шрифтом.
Code (perl): скопировать код в буфер обмена
$sss='проба';
$name='Проба пера';
$name =~ s (www.perldoc.com/perl5.6/pod/func/s.html)/$sss/<b>$sss<\/b>/ig;
В данном случае, слово "Проба" не выделится жирным шрифтом.
А как настроить setlocal, чтобы этот пример заработал?
Back to top
Ant
Сотрудник «Лаборатории»



Joined: 17 Jun 2003
Posts: 6840
Карма: 132
   поощрить/наказать


PostPosted: Wed Aug 13, 2003 1:22 pm (спустя 4 часа 26 минут)
   Post subject:
Reply with quote

Новый:
Вверху страницы нажимаешь на ссылку ПОИСК, после этого в качестве выражения для поиска пишешь setlocale. Точно помню, что этот вопрос уже поднимался.
Back to top
View user's profile Send private message Send e-mail
Enilatiar
Участник форума



Joined: 09 Jun 2003
Posts: 690
Карма: 24
   поощрить/наказать


PostPosted: Wed Aug 13, 2003 1:26 pm (спустя 3 минуты)
   Post subject:
Reply with quote

Code (perl): скопировать код в буфер обмена
use locale;

$sss='';
$name=' ';

$name =~ s|\b($sss)\b|<b>$1</b>|ig;
Работает. Спасибо за урок.

Кстати,
Code (perl): скопировать код в буфер обмена
use POSIX qw (www.perldoc.com/perl5.6/pod/func/qw.html)(locale_h);
setlocale(LC_ALL,"ru_RU.cp1251");
Back to top
View user's profile Send private message
Ant
Сотрудник «Лаборатории»



Joined: 17 Jun 2003
Posts: 6840
Карма: 132
   поощрить/наказать


PostPosted: Wed Aug 13, 2003 2:05 pm (спустя 39 минут)
   Post subject:
Reply with quote

Кстати, у меня и без локали работает.
Back to top
View user's profile Send private message Send e-mail
Enilatiar
Участник форума



Joined: 09 Jun 2003
Posts: 690
Карма: 24
   поощрить/наказать


PostPosted: Wed Aug 13, 2003 2:39 pm (спустя 33 минуты)
   Post subject:
Reply with quote

Без локали не учитывается регистр. Контрольный пример не должен сработать, ибо там указано 'проба', а должно быть найдено 'Проба'.
Впрочем, все это очень странно, поскольку мне казалось, что после перехода на Unicode (Perl 5.6+) все должно работать без специальных "танцев с бубнами".
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Aug 13, 2003 3:02 pm (спустя 23 минуты)
   Post subject:
Reply with quote

Нет, все зависит от хостера, а точнее, от той локали, которая у него установлена по умолчанию. И, возможно, от локали, в которой компилировался Perl. Судя по тому, что обычное use locale помогло, по умолчанию у хостера локаль стоит правильная.Будьте осторожны с функцией setlocale(): она, кажется, несовместима с use locale. По крайней мере, я несколько раз натыкался на что-то подобное, надо экспериментировать.

Под Windows проблем нет: там только одна локаль — win1251.
Back to top
View user's profile Send private message Send e-mail
HeroMand
Заглянувший



Joined: 19 Aug 2003
Posts: 10
Карма: 0
   поощрить/наказать

Location: Москва

PostPosted: Wed Aug 20, 2003 12:22 am (спустя 6 дней 9 часов 20 минут)
   Post subject:
Reply with quote

У меня на локальной машине с WinXP и Perl5.00503 поставленный из АктивПерл без "use locale" тоже вышенаписанный пример не работал.
А где можно чайнику почитать про эту локаль - для чего она и с чем её едят?
Back to top
View user's profile Send private message Send e-mail
Enilatiar
Участник форума



Joined: 09 Jun 2003
Posts: 690
Карма: 24
   поощрить/наказать


PostPosted: Wed Aug 20, 2003 1:00 pm (спустя 12 часов 37 минут)
   Post subject:
Reply with quote

HeroMand wrote:
Perl5.00503 поставленный из АктивПерл
Используйте более позднюю версию. Либо 5.6, либо 5.8.
Back to top
View user's profile Send private message
HeroMand
Заглянувший



Joined: 19 Aug 2003
Posts: 10
Карма: 0
   поощрить/наказать

Location: Москва

PostPosted: Wed Aug 20, 2003 8:14 pm (спустя 7 часов 14 минут)
   Post subject:
Reply with quote

Enilatiar wrote:
Используйте более позднюю версию. Либо 5.6, либо 5.8.
А можно прямую ссылку дать?
А то на сайте АктивПерл через какую то регистрацию надо теперь проходить ...
Back to top
View user's profile Send private message Send e-mail
Enilatiar
Участник форума



Joined: 09 Jun 2003
Posts: 690
Карма: 24
   поощрить/наказать


PostPosted: Wed Aug 20, 2003 8:59 pm (спустя 44 минуты)
   Post subject:
Reply with quote

Пройдите регистрацию. Она никчему не обязывает и спама от них нет. Много раз проверял.
Они правда будут навязывать дополнительные продуткы, но перл они распростряняют бесплатно.
Back to top
View user's profile Send private message
HeroMand
Заглянувший



Joined: 19 Aug 2003
Posts: 10
Карма: 0
   поощрить/наказать

Location: Москва

PostPosted: Wed Aug 20, 2003 9:26 pm (спустя 26 минут)
   Post subject:
Reply with quote

ОК. Сейчас попробую ...
Back to top
View user's profile Send private message Send e-mail
HeroMand
Заглянувший



Joined: 19 Aug 2003
Posts: 10
Карма: 0
   поощрить/наказать

Location: Москва

PostPosted: Wed Aug 20, 2003 10:02 pm (спустя 36 минут)
   Post subject:
Reply with quote

Неа, та же фигня. Поставил perl5.8.0.
Back to top
View user's profile Send private message Send e-mail
Enilatiar
Участник форума



Joined: 09 Jun 2003
Posts: 690
Карма: 24
   поощрить/наказать


PostPosted: Wed Aug 20, 2003 10:20 pm (спустя 17 минут)
   Post subject:
Reply with quote

А что значит "та же фигня". Что не получается. Пример был скопирован из работающего файла.
Back to top
View user's profile Send private message
HeroMand
Заглянувший



Joined: 19 Aug 2003
Posts: 10
Карма: 0
   поощрить/наказать

Location: Москва

PostPosted: Wed Aug 20, 2003 10:25 pm (спустя 4 минуты)
   Post subject:
Reply with quote

use locale;

$sss='проба';
$name='Проба пера';
$name =~ s|\b($sss)\b|<b>$1</b>|ig;
open(FL,">primer.txt");
print FL $name;
close(FL_);
<>;

^^^ работает ^^^^^

А без первой строчки - нет. То есть в файл пишет _без_ тэгов.
Back to top
View user's profile Send private message Send e-mail
Enilatiar
Участник форума



Joined: 09 Jun 2003
Posts: 690
Карма: 24
   поощрить/наказать


PostPosted: Wed Aug 20, 2003 10:28 pm (спустя 2 минуты)
   Post subject:
Reply with quote

HeroMand wrote:
А без первой строчки - нет
Что пишет? По каким причинам не работает?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Aug 20, 2003 11:08 pm (спустя 40 минут)
   Post subject:
Reply with quote

Подождите-ка. Он же и не должен работать без первой строчки.
Back to top
View user's profile Send private message Send e-mail
HeroMand
Заглянувший



Joined: 19 Aug 2003
Posts: 10
Карма: 0
   поощрить/наказать

Location: Москва

PostPosted: Wed Aug 20, 2003 11:32 pm (спустя 23 минуты)
   Post subject:
Reply with quote

Ничего не пишет. Или в логах посмотреть? А где в перле логи?
Back to top
View user's profile Send private message Send e-mail
BadArt
Guest





Карма: 388
   поощрить/наказать


PostPosted: Thu Aug 21, 2003 3:18 am (спустя 3 часа 45 минут)
   Post subject:
Reply with quote

Логи нужно у апачи смотреть, там в папке logs или более простой вариант:
use CGI::Carp qw (fatalsToBrowser);
в этом случае ошибки будут описаны в броузере
Back to top
HeroMand
Заглянувший



Joined: 19 Aug 2003
Posts: 10
Карма: 0
   поощрить/наказать

Location: Москва

PostPosted: Thu Aug 21, 2003 11:39 am (спустя 8 часов 21 минуту)
   Post subject:
Reply with quote

А зачем мне Апач и броузер?
Я пишу скрипт, потом его запускаю. Он выполняет свою работу и всё. Мне на локальной машине сервак не нужен. Для этого я на хостинге тренируюсь.
Вопрос был именно про локальную машину.
Back to top
View user's profile Send private message Send e-mail
Enilatiar
Участник форума



Joined: 09 Jun 2003
Posts: 690
Карма: 24
   поощрить/наказать


PostPosted: Thu Aug 21, 2003 12:27 pm (спустя 47 минут)
   Post subject:
Reply with quote

Просто не работать скрипт не может, всегда есть причина.
Давайте определяться. У меня так

[*]
Code (perl): скопировать код в буфер обмена
($sss, $name) = ('', ' ');
$name =~ s|\b($sss)\b|<b>$1</b>|ig;
print (www.perldoc.com/perl5.6/pod/func/print.html) $name;
Выдает исходную строчку: Проба пера

[*]
Code (perl): скопировать код в буфер обмена
use locale;
($sss, $name) = ('проба', 'Проба пера');
$name =~ s|\b($sss)\b|<b>$1</b>|ig;
print (www.perldoc.com/perl5.6/pod/func/print.html) $name;
Выдает выделенную: <b>Проба</b> пера

А у Вас?
Back to top
View user's profile Send private message
HeroMand
Заглянувший



Joined: 19 Aug 2003
Posts: 10
Карма: 0
   поощрить/наказать

Location: Москва

PostPosted: Thu Aug 21, 2003 12:57 pm (спустя 29 минут)
   Post subject:
Reply with quote

У меня то же самое. Только код другой. Я выше приводил.
Значит всё таки "use locale;" обязательно присоединять? Тогда вопросов нет.
Но есть пара других.
Как в терминальном окне ВинХР сделать, чтоб русские буквы были не аброкадаброй. Как его на папку фонт натравить?
Что такое всё таки эта локаль и где можно про неё почитать по русски? Я по английски не так силён.
Спасибо!
Back to top
View user's profile Send private message Send e-mail
Enilatiar
Участник форума



Joined: 09 Jun 2003
Posts: 690
Карма: 24
   поощрить/наказать


PostPosted: Thu Aug 21, 2003 1:03 pm (спустя 5 минут)
   Post subject:
Reply with quote

Давайте разделять вопросы. В частности вопрос по "теминальному окну ВинХР" совершенно не ясен.
Вы имеете ввиду telnet сессию или Remote Desktop? Что Вы делаете, чтобы получить абракадабру?
Кстати, относиться ли это вопрос к перлу?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Thu Aug 21, 2003 4:41 pm (спустя 3 часа 38 минут)
   Post subject:
Reply with quote


М

Один топик — один вопрос. Второй Ваш вопрос понятен, но заведите для него отдельную тему.

И еще Вам персональный совет — старайтесь все же читать, что Вам пишут. То, что use locale обязательно нужно писать, уже раза 3 тут сказали.
Back to top
View user's profile Send private message Send e-mail
HeroMand
Заглянувший



Joined: 19 Aug 2003
Posts: 10
Карма: 0
   поощрить/наказать

Location: Москва

PostPosted: Thu Aug 21, 2003 7:45 pm (спустя 3 часа 4 минуты)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
То, что use locale обязательно нужно писать, уже раза 3 тут сказали
Я не любитель стрелки переводить, но мне показалось, после нижепроцитированной мессаги господина Enilatiar'а, что всё же первая строка не обязательна.
Enilatiar wrote:
HeroMand писал(а):
А без первой строчки - нет
Что пишет? По каким причинам не работает?
Back to top
View user's profile Send private message Send e-mail
Enilatiar
Участник форума



Joined: 09 Jun 2003
Posts: 690
Карма: 24
   поощрить/наказать


PostPosted: Thu Aug 21, 2003 8:10 pm (спустя 24 минуты)
   Post subject:
Reply with quote

Я не понял перевода стрелок. Не стелочник я, меня здесь вообще больше нет.
:(
Back to top
View user's profile Send private message
HeroMand
Заглянувший



Joined: 19 Aug 2003
Posts: 10
Карма: 0
   поощрить/наказать

Location: Москва

PostPosted: Thu Aug 21, 2003 8:21 pm (спустя 10 минут)
   Post subject:
Reply with quote

Да не ты стрелочник конечно, а я.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   This topic is locked: you cannot edit posts or make replies. All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You cannot download files in this forum.
XML