Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2010, 17:37   #1
samCS
Пользователь
 
Аватар для samCS
 
Регистрация: 06.12.2008
Сообщений: 11
По умолчанию Поиск и вывод строк из файла

Как реализовать тоже самое только не чуствительное к регистру.
в файле построчно содержаться цифры и бквы в верхнем регистре.

Код:
<?php
$id=$_GET["id"];
$fp = file("n.txt");
$id = strtr($id, "йцукенгшщзхъфывапролджэячсмитьбю", "ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ");   
for($i=0;$i<count($fp);$i++)  { 
if (substr_count($fp[$i], $id) > 0 ) {
echo $fp[$i],'<br/>' ;
}
}
?>

PS. прошу матом не ругаться, я в php нуб.
samCS вне форума Ответить с цитированием
Старый 07.03.2010, 02:57   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Вам же не надо количество вхождений? Тогда вместо substr_count можно использовать более простые функции. Например так
Код:
if (stripos($fp[$i], $id) !== false ) {
echo $fp[$i],'<br/>' ;}
Обратите внимание, здесь оператор именно !==, а не !=
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 07.03.2010, 20:22   #3
samCS
Пользователь
 
Аватар для samCS
 
Регистрация: 06.12.2008
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Greblin Посмотреть сообщение
Вам же не надо количество вхождений? Тогда вместо substr_count можно использовать более простые функции. Например так
Код:
if (stripos($fp[$i], $id) !== false ) {
echo $fp[$i],'<br/>' ;}
Обратите внимание, здесь оператор именно !==, а не !=
Огромное спасибо, ваш пример работоспособен, но чуствительность к регистру всёравно осталась =(
samCS вне форума Ответить с цитированием
Старый 08.03.2010, 11:55   #4
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Цитата:
Сообщение от samCS Посмотреть сообщение
Огромное спасибо, ваш пример работоспособен, но чуствительность к регистру всёравно осталась =(
Выложите тот код, который у вас получился. Чувствую я, там не всё гладко.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 09.03.2010, 11:03   #5
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Greblin
офтоп, но обьяните в чем отличие !== и != или дайте ссылку плиз..
В гугле не смог найти.
ssdm вне форума Ответить с цитированием
Старый 09.03.2010, 16:10   #6
samCS
Пользователь
 
Аватар для samCS
 
Регистрация: 06.12.2008
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Johnatan Посмотреть сообщение
Выложите тот код, который у вас получился. Чувствую я, там не всё гладко.
убераем изменение регистра, меняем условие.
соответственно:
Код:
<?php
$id=$_GET["id"];
$fp = file("n.txt");   
for($i=0;$i<count($fp);$i++)  { 
if (stripos($fp[$i], $id) !== false ) {
echo $fp[$i],'<br/>' ;}
}
?>
но эфекта это не дало, хоть и stripos как утверждают многочисленые описания к регистру не чуствителен.

Последний раз редактировалось samCS; 09.03.2010 в 16:12.
samCS вне форума Ответить с цитированием
Старый 10.03.2010, 02:32   #7
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Цитата:
Сообщение от alexinspir Посмотреть сообщение
!== НЕ эквивалентно

!= НЕ строго равно

т.е.
1==="1" true
1=="1" false

1!=="1" false
1!="1" true
O_O
Выпал в осадок от этого.... Пошёл проверить...

PHP код:
if (1==="1") echo "TRUE"; else echo "FALSE"
Результат: FALSE

PHP код:
if (1=="1") echo "TRUE"; else echo "FALSE"
Результат: TRUE

PHP код:
if (1!=="1") echo "TRUE"; else echo "FALSE"
Результат: TRUE

PHP код:
if (1!="1") echo "TRUE"; else echo "FALSE"
Результат: FALSE

http://php.su/learnphp/operators/?compar
$a == $b Равно TRUE если $a равно $b.
$a === $b Тождественно равно TRUE если $a равно $b и имеет тот же тип.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 10.03.2010, 02:45   #8
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Цитата:
Сообщение от samCS Посмотреть сообщение
убераем изменение регистра, меняем условие.
соответственно:
Код:
<?php
$id=$_GET["id"];
$fp = file("n.txt");   
for($i=0;$i<count($fp);$i++)  { 
if (stripos($fp[$i], $id) !== false ) {
echo $fp[$i],'<br/>' ;}
}
?>
но эфекта это не дало, хоть и stripos как утверждают многочисленые описания к регистру не чуствителен.
Во-первых, что за запятая после echo $fp[$i]. Кака какая-то. ))
Во-вторых, я проверил Ваш код. Он рабочий и не зависит от регистра. Советую перехватывать каждый id и строчку из файла и выводить на экран через echo или дебаггер. И смотреть, где должно быть совпадение, но его почему-то нет. Может у вас там буква русская (!).

Ещё совет, не ставьте count($fp) в условие цикла. Пересчёт массива происходит каждый цикл, а это плохо влияет на производительность. Просто, на будущее.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 10.03.2010, 04:07   #9
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от Johnatan Посмотреть сообщение
много букв
($_GET['id']===1) интересно, почему такой код работает?(php 4.1 вродь) автобоксинг? или у нас 0x31 стало эквивалентно 0x01 или через $_GET стали приходит числа а не строки?
Код:
echo dechex(ord($_GET['id'][0]));
выведет 31 если передать id=1

свой пост потер временно, жду разъяснений.

в php 5.2 проверил, там наоборот. все как в мануале:
http://php.net/manual/en/language.op...comparison.php
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.

Последний раз редактировалось alexinspir; 10.03.2010 в 04:36.
alexinspir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод строк, лабораторная Sonyalex90 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 12 03.12.2009 22:46
Поиск в файле, вывод из файла online_maniac Помощь студентам 2 01.11.2009 09:32
Ввод/вывод строк anGeee Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 04.09.2009 21:58
поиск по наванию файла и вывод на экран Karinka Общие вопросы Delphi 12 16.03.2009 11:52
вывод GridView строк Shouldercannon Общие вопросы Delphi 0 25.02.2009 12:07