ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

14.04.2010, 22:48
|
|
Участник форума
Регистрация: 14.01.2009
Сообщений: 194
Провел на форуме: 798217
Репутация:
44
|
|
2 Pashkela
Я хочу чтобы скрипт проверил состоит ли имя пользователя из
Русских Английски букв и тире "-".
Ну то есть,чтобы принимал Русские , Ангийские имена и имена которые пишутся через дефис "-".
"Ван-Дер-Ваальс",но в то же время,чтобы имя нельзя было сделать из одних символов "-"
Старался как мог.
|
|
|

14.04.2010, 22:55
|
|
Постоянный
Регистрация: 08.11.2008
Сообщений: 498
Провел на форуме: 2603363
Репутация:
278
|
|
Сообщение от svesve
есть строка вида
Код:
<a clas="..." href="...">info</a>, <a clas="..." href="...">info2</a>, <a clas="..." href="...">info3</a>,........
нужно выдрать все между тегами <a></a> конструкция будет одинакова
PHP код:
preg_match('#">(.*?)<\/a>#',$in,$out);
, как эту конструкцию повторять,??? ведь может быть и 1 повтор и 10 повторов конструкции.
preg_match_all, не?
|
|
|

14.04.2010, 23:32
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Сообщение от ZnikiR
2 Pashkela
Я хочу чтобы скрипт проверил состоит ли имя пользователя из
Русских Английски букв и тире "-".
Ну то есть,чтобы принимал Русские , Ангийские имена и имена которые пишутся через дефис "-".
"Ван-Дер-Ваальс",но в то же время,чтобы имя нельзя было сделать из одних символов "-"
Старался как мог.
Вот теперь ТЗ понятное и вопросов не вызывает:
1. Можно Русские символы
2. Можно Английские символы
3. Нельзя спец-символы (кроме тире)
4. Нельзя одни только "-"
5. Нельзя смесь русских и английских буковок
6. Регистр любой (в любой месте ника)
7. Длина ника от 3 до 60 символов
PHP код:
<?php
$a = "Куку";
if (!preg_match('#[^а-яА-Яa-z\-]#i',$a) && preg_match('#[а-яА-Яa-z]#i',$a) && !(preg_match('#[а-яА-Я]#',$a) && preg_match('#[a-z]#i',$a)) && strlen($a)>=3 && strlen($a)<=60) echo "Ok";
else echo "Error";
?>
Последний раз редактировалось Pashkela; 14.04.2010 в 23:47..
|
|
|

15.04.2010, 11:35
|
|
Участник форума
Регистрация: 14.01.2009
Сообщений: 194
Провел на форуме: 798217
Репутация:
44
|
|
Так как это раздел, где вопросы для новичков,то решил спросить,а то понять не могу.И нигде не написано про "#"
Чем отличается
preg_match('#[^а-яА-Яa-z\-]#i',$a)
от
preg_match('/[^а-яА-Яa-z\-]/i',$a)
И вообще я до сих пор не понял,как работает preg_match.
Можете объяснить?
+ добавлено скрпит Пашкелы пропускает имена типа "-ыв-фы-вфыв---фыв--",что не есть хорошо.
Попробывал так,но не сработало.
[^а-яА-Яa-z\-?]
Я понимаю,что регулярка понимает это как полседовательность
от "\" до "?" ?
Последний раз редактировалось ZnikiR; 15.04.2010 в 11:48..
|
|
|

15.04.2010, 11:50
|
|
Участник форума
Регистрация: 31.01.2010
Сообщений: 170
Провел на форуме: 1442841
Репутация:
63
|
|
если ставить '#' то не придется ставить '\' перед '/'
|
|
|

15.04.2010, 12:06
|
|
Постоянный
Регистрация: 15.06.2007
Сообщений: 527
Провел на форуме: 1734541
Репутация:
214
|
|
Код HTML:
<td class="bold">Описание:</td>
</tr>
<tr class="infoRow">
<td>Фрэнк Пеш рoдился под счастливой звeздой. Всю жизнь oн не вeдал пoражeний ни в любви, ни в уличных рaзбoрках, ни зa игoрным столом. А так кaк Фрэнк был итальянцем и жил в Нью-Йорке, жизнь постoянно прeдоставляла ему шанс проверить свою удачливость на практике. В этой гангстерской комедии есть все: смех и слезы, любовь и ненависть. Перед вашими глазами на протяжении нескольких десятилетий разворачивается история семьи Пеш со всеми ее горестями и радостями, прекрасные актерские работы не оставят равнодушными даже самого взыскательного зрителя.</td>
</tr>
<tr class="infoRow2">
<td class="bold">В главных ролях:</td>
</tr>
<tr class="infoRow">
<td><a href="actor.php?name=%D0%94%D1%8D%D0%BD%D0%BD%D0%B8%20%D0%90%D0%B9%D0%B5%D0%BB%D0%BB%D0%BE">Дэнни Айелло</a>, <a href="actor.php?name=%D0%AD%D0%BD%D1%82%D0%BE%D0%BD%D0%B8%20%D0%9B%D0%B0%20%D0%9F%D0%B0%D0%BB%D1%8C%D1%8F">Энтони Ла Палья</a></td>
</tr>
как правильно отпарсить описание??
|
|
|

15.04.2010, 14:11
|
|
Участник форума
Регистрация: 14.01.2009
Сообщений: 194
Провел на форуме: 798217
Репутация:
44
|
|
В общем я написал наконец нормальную проверку имени.
Спасибо Pashkela за код.
В общем функция для проверки имени полязователя на валид ( правильность , валидность )
PHP код:
if (!preg_match('#-{2,}#',$a) && //нет двух подряд тире
preg_match_all('#-#',$a,$m1)<3 && //И в строке меньше 3 тире,т.е. 1 или 2
!preg_match('#(^-|-$)#',$a) && //И нет тире в начале или конце
!(preg_match('#[а-яА-Я]#',$a) && preg_match('#[a-z]#i',$a)) && //И не используються сразу англ и русские символы
!preg_match('#[^а-яА-Яa-z\-]#i',$a) && //И не используються знаки кроме разрешенных {"а-я" "А-Я" "a-z" "A-Z" и "-"}
strlen($a)>=3 && //И имя длиннее 3 символов
strlen($a)<=30 //И имя короче 30 символов
)echo "Ok";
else echo "Error<br>";
Еще Можно объядинить эти две строки
PHP код:
!preg_match('#-{2,}#',$a)
!preg_match('#(^-|-$)#',$a)
В
PHP код:
preg_match('#-{2,}|(^-|-$)#',$a,$m1);
Последний раз редактировалось ZnikiR; 15.04.2010 в 14:26..
|
|
|

15.04.2010, 18:51
|
|
Участник форума
Регистрация: 31.01.2010
Сообщений: 170
Провел на форуме: 1442841
Репутация:
63
|
|
Сообщение от svesve
как правильно отпарсить описание??
PHP код:
preg_match('/<td>(.+)<\/td>/',$text,$a);
|
|
|

15.04.2010, 20:51
|
|
Постоянный
Регистрация: 15.06.2007
Сообщений: 527
Провел на форуме: 1734541
Репутация:
214
|
|
Сообщение от Compton
PHP код:
preg_match('/<td>(.+)<\/td>/',$text,$a);
такой регуляркой помимо описания ты еще кучу чего зацепишь
спс.но я уже разобрался )
|
|
|

17.04.2010, 00:01
|
|
Участник форума
Регистрация: 01.01.2009
Сообщений: 138
Провел на форуме: 817404
Репутация:
82
|
|
svesve
PHP код:
preg_match('/\"infoRow\">[^<]*<td>(.+)<\/td>/',$text,$a);
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|