Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аналог php'ных stristr и strtr, Функции 
:(
    Опции темы
psylostlife
  Дата 30.5.2010, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.5.2010

Репутация: нет
Всего: нет



Здравствуйте. Только пересел на линух и начал разбираться в перле.

У меня имеется такая конструкция в пхп скрипте:

Код

$size = sizeof( $mats ) - 1;
for($b = 0; $b <= $size; $b++)

{

     if( stristr ( strtr ( $ts, $iscl ), $mats[$b] ) )

     {
         # Действие вывода
         Break;
     }
}


где:
$mats - массив, содержащий подстроки
$ts - строка, в которой ищется вхождение этих подстрок
$iscl - массив исключений вида "подстрока" - "<исключение>" (просто перед поиском сначала вырежем все исключения, на которые может срабатывать)
Ну и последний stristr ищет циклично вхождение. Находит - выводит на экран(или в файл, это не важно), останавливает цикл и идёт следующий виток общего цикла(тут его не привел, написал сам, там считывание из файла построчно).

Помогите пожалуйста, как это можно переписать на перле? Копался в гугле, искал аналоги, но не вышло :(


Это сообщение отредактировал(а) psylostlife - 30.5.2010, 15:08
PM MAIL   Вверх
arto
Дата 30.5.2010, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



что такое "исключение"?
PM MAIL ICQ   Вверх
psylostlife
Дата 31.5.2010, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.5.2010

Репутация: нет
Всего: нет



Это список подстрок, заменяемых на текст "<исключение>" - для того, чтобы исключить срабатывание на определенные слова. Поиск идет по частям слов.

За примером далеко ходить не надо.

Должно, например, срабатывать на тр*х - поэтому перед поиском заменяем слова застрахуй(точнее даже застрах - предугадать -уй, -овать, -овал и прочее).
PM MAIL   Вверх
sir_nuf_nuf
Дата 31.5.2010, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



Код

sub check_mat {
  my $ts = 'застрах*й свой х*й';
  my @iscl = ('застрах');
  my @mats = ('x*й', 'п*д*р*с');
  foreach (@iscl) {
    $ts =~ s/$_/<исключение>/gi;
  }
  foreach (@mats) {
    if ($ts =~ s/$_/) {
      return 1;
    }
  }
  return 0;
}

Это дословный перевод вашего алгоритма.

Но перлист бы написал нечто другое

Это сообщение отредактировал(а) sir_nuf_nuf - 31.5.2010, 11:28


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
arto
Дата 31.5.2010, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



антимат? ну-ну.

foreach my $i (@iskl) { $ts =~ s#$i->[0]#$i->[1]#g }
foreach my $m (@mats) { $ts =~ m#$m# && print $&; }

подойдет?

пс. можно где увидеть результат, проверить?
PM MAIL ICQ   Вверх
ming
Дата 1.6.2010, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 30.1.2009
Где: Новосибирск

Репутация: 2
Всего: 3



поиск подстроки в строке - index
поиск подстроки в строке без учёта регистра - комбинация index и lc



Это сообщение отредактировал(а) ming - 1.6.2010, 20:35
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0448 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.