if ( (preg_match('/[a-z]/i,$open)) && (preg_match('/[а-я]/i,$open)) echo "olololo! Don't meshat niki, no plz!"; это к вопросу о смешанных никах (русс/англ). Остальное долго курил, вообще не понял вопроса
Собственно выслушал всех, вот что получил: PHP: elseif........ elseif ( (preg_match('/[a-z]/i',$user)) && (preg_match('/[а-я]/i',$user))) {$msg = "Ник содержит запрещенные знаки!";} elseif (!preg_match("!^[абвгдежзийклмнопрстуфхцчшщъыьэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯa-z1-9@\\*\\)\\(\\?\\!\\-_\\]\\[=~]+$!i",$user)) {$msg = "Ник содержит запрещенные знаки!";} elseif... Как то вот так, и все нормально робит xD з.ы. с русскими буквами глюки, если их проверяешь в отдельном выражении от латыни то принимает "а-яi", а если в одном то приходится весь алфавит в нижнем и верхнем регистре писать, мб кто то подскажет как избавиться от этого
Есть среди прочей лабуды на странице такое сочетание: Code: всякий разный текст... += "123456"; всякий разный текст... Где "всякий разный текст" - это текст, он меняется и тд. +="123456" - остается постоянным, т.е. 123456 может меняться, но "+=" есть всегда. Нужно из такой страницы взять значения после += которые идут в кавычках. Т.е. только значения. В данном случае 123456. Заранее спасибо!
Проблема при проверки имени пользователя. Имя пользователя может быть как на латинице так и на киррилице. При использование Кирилицы (русского) выдает ошибку. Вот код PHP: function name_check($name){ $name = trim($name); if (strlen($name) >= 3){ if (strlen($name) <= 60){ if (preg_match("([^а-яА-Яa-zA-Z-]+)",$name)) { $err = 1; } else { $err = 0; } } else $err = 2; //очень длинный логин } else $err = 3; //очень короткий логин return $err; } Как исправить?
есть строка вида Code: <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 повторов конструкции.
2 m0Hze У меня PHP: echo name_check('Василий'); //равно 1,т.е. ошибка. Может это из-за настроек денвера? Или я неправильно код прочита?
Не могу найти его. Символ "i" после закрывающего ограничителя шаблона означает регистронезависимый поисК? Сейчас приведу код с комментариями,скажите я правильно его понял? PHP: function name_check($name){ $name = trim($name); if (strlen($name) >= 3){ if (strlen($name) <= 60){ if (preg_match("/^([а-яa-z\-]+)$/i",$name)) { print_r(preg_match("/^([а-яa-z\-]+)$/i",$name)); $err = 1; // ошибка:используются неразрешенные символы } else { $err = 2; // всё супер,используються разрешенные символы } } else $err = 3; //очень длинное имя } else $err = 4; //очень короткое имя return $err; }
Да, но твою проблему это не решит, т.к. ты совершенно не владеешь русским языком и даже не можешь нормально сформулировать вопрос, а именно - донести, что вообще требуется от скрипта без своих мегаговнокодов, просто спросить, типо "хочу, чтобы ....., как сделать" Твоё "Как исправить?" никак не упрощает ситуацию PS: Если ми правильно протелепатировал - последний пост предыдущей страницы, иногда читать надо не только свои вопросы
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"; ?>
Так как это раздел, где вопросы для новичков,то решил спросить,а то понять не могу.И нигде не написано про "#" Чем отличается preg_match('#[^а-яА-Яa-z\-]#i',$a) от preg_match('/[^а-яА-Яa-z\-]/i',$a) И вообще я до сих пор не понял,как работает preg_match. Можете объяснить? + добавлено скрпит Пашкелы пропускает имена типа "-ыв-фы-вфыв---фыв--",что не есть хорошо. Попробывал так,но не сработало. [^а-яА-Яa-z\-?] Я понимаю,что регулярка понимает это как полседовательность от "\" до "?" ?
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> как правильно отпарсить описание??
В общем я написал наконец нормальную проверку имени. Спасибо 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);