PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (106): В начало « ... 87 88 89 90 [91] 92 93 94 95 ... » В конец

> Найдено сообщений: 1580
Строитель Отправлено: 19 Июня, 2016 - 18:48:32 • Тема: Расстояние между словами • Форум: Регулярные выражения

Ответов: 13
Просмотров: 1526
supmener пишет:
А можно ли написать вариант одной строкой без операторов PHP?
Ну, сам шаблон вот ~болезнь.*ноги~iu, а уж подойдёт ли он для ваших целей, я не знаю.
Строитель Отправлено: 19 Июня, 2016 - 18:35:27 • Тема: Расстояние между словами • Форум: Регулярные выражения

Ответов: 13
Просмотров: 1526
supmener пишет:
Чтобы найдено было также "болезнь связки правой голени ноги". То есть здесь дополнительно появилось 3 слова между ключевыми. А может быть и другое количество, например "болезнь правой ноги"
PHP:
скопировать код в буфер обмена
  1.  
  2. $str = 'какой-то текст ... болезнь связки правой голени ноги ... ';//или болезнь ноги
  3. $pat = '~болезнь.*ноги~iu';
  4. preg_match($pat, $str, $arr);
  5.  
  6. echo $arr[0];//болезнь связки правой голени ноги
Строитель Отправлено: 17 Июня, 2016 - 23:56:46 • Тема: Склонения слова • Форум: Вопросы новичков

Ответов: 2
Просмотров: 158
malinovsku, написал функцию на основе регулярок. Шаблоны в регулярках наверное можно и оптимизировать.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. function incline($int, $coder = ' программист') {
  4.     !preg_match('~^[2-9]+1$|^1$|^[1-9][0-9]+1$~', $int) ?: $out = $int . $coder;
  5.     !preg_match('~^[2-4]$|^[2-9]+[2-4]$|^1+[2-4]+[2-4]+$|^[1-9][0-9]+[2-4]+$~', $int) ?: $out = $int . $coder .'a';
  6.     !preg_match('~^[05-9]$|^[0-9]+[05-9]$|^\d*1+[1-4]$~', $int) ?: $out = $int . $coder .'ов';
  7.     return $out;
  8. }
  9.  
  10. if (!empty($_POST['int'])) {
  11.     $out = incline((int)$_POST['int']);
  12. } else {
  13.     $out = '';
  14. }
  15.  
  16. ?>
  17.  
  18. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  19. <html
  20. <head>
  21.     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  22. </head>
  23. <body>
  24.     <form method="POST" >
  25.         <input type="text" name="int"/>
  26.         <input type="submit" value="Жми"/>
  27.     </form>
  28.     <?=$out?>
  29. </body>
  30. </html>
Строитель Отправлено: 15 Июня, 2016 - 22:09:27 • Тема: Как сделать выборку из массива? • Форум: Вопросы новичков

Ответов: 7
Просмотров: 1712
Viper пишет:
Строитель count() непосредственно в for() делать не стоит, лучше вынести перед циклом в переменную.
Ну, вроде бы всё согласно мануалу... Или вы имеете ввиду это замечание: "Вышеприведенный код может работать медленно, так как размер массива вычисляется в каждой итерации" ? Если да, то у меня оптимизированная запись, в которой count() вычисляется только один раз, в момент компиляции (а не перед каждой итерацией).
(Добавление)
Мелкий пишет:
Зачем так сложно?
PHP:
скопировать код в буфер обмена
  1. $result = [];
  2. foreach ($array as $item) {
  3.     if (!isset($result[ $item[1] ]) or $result[ $item[1] ][0] < $item[0]) {
  4.         $result[ $item[1] ] = $item;
  5.     }
  6. }
На более компактный вариант мне не хватило мышления )
Строитель Отправлено: 15 Июня, 2016 - 19:32:28 • Тема: Как сделать выборку из массива? • Форум: Вопросы новичков

Ответов: 7
Просмотров: 1712
Странник пишет:
Огромное спасибо! Все заработало Улыбка
Подправил условие в цикле for . В работе ничего не изменилось, просто так проще читать код .
Строитель Отправлено: 15 Июня, 2016 - 14:28:13 • Тема: Как сделать выборку из массива? • Форум: Вопросы новичков

Ответов: 7
Просмотров: 1712
Странник пишет:
Подскажите как удалить из массива ненужные элементы, так, чтоб имена не повторялись, а из тех что повторялись, осталось Имя с максимальным возрастом
У меня варианта покороче не получилось, может кто-то напишет ещё
PHP:
скопировать код в буфер обмена
  1.  
  2. $array = [
  3.     [52, 'Петя'],
  4.     [3,  'Сергей'],
  5.     [33, 'Оксана'],
  6.     [3,  'Петя'],
  7.     [10, 'Сергей'],
  8.     [12, 'Петя'],
  9.     [17, 'Люда'],
  10.     [24, 'Сергей'],
  11.     [8,  'Надя']
  12. ];
  13.  
  14. $age = [];
  15. $name = [];
  16. $temp = [];
  17. $result = [];
  18.  
  19. foreach ($array as $arr) {
  20.     foreach ($arr as $key => $val) {
  21.         if (!($key % 2)) {
  22.             $age[] = $val;
  23.         } else {
  24.             $name[] = $val;
  25.         }
  26.     }
  27. }
  28.  
  29. for ($i = 0, $y = count($age); $i < $y; $i++) {
  30.     if (empty($temp[$name[$i]])) {
  31.         $temp[$name[$i]] = $age[$i];
  32.     } elseif ($temp[$name[$i]] < $age[$i]) {
  33.         $temp[$name[$i]] = $age[$i];
  34.     }
  35. }
  36.  
  37. foreach ($temp as $name => $age) {
  38.     $result[] = [$age, $name];
  39. }
  40.  
  41. echo '<pre>'; print_r($result);
  42.  
Строитель Отправлено: 13 Июня, 2016 - 23:07:22 • Тема: Условия IF <> с маской • Форум: Вопросы новичков

Ответов: 4
Просмотров: 250
Elegant пишет:
Как сделать условие по типу
Можно например регуляркой
PHP:
скопировать код в буфер обмена
  1. $ip = '66.102.6.183'; // Робот из ГУГЛА
  2.  
  3. if (preg_match('~^6{2}~', $ip)) {
  4.     echo 'Робот из ГУГЛА';
  5. }
Строитель Отправлено: 12 Июня, 2016 - 20:33:00 • Тема: Генерация уникальных чисел • Форум: Вопросы новичков

Ответов: 4
Просмотров: 293
ilya2231 пишет:
Вот мне хотелось бы сделать проверки уникальности числа. Если число неуникально, то перегенерировать его
В таких случаях, я думаю, правильнее было бы собрать все значения в массив, а потом случайным образом их выбирать из массива, при этом те значения, которые были выбраны, удалять из массива. При таком подходе вы получите рандомный выбор без повторений.
Строитель Отправлено: 11 Июня, 2016 - 14:27:05 • Тема: Строка • Форум: Программирование на PHP

Ответов: 2
Просмотров: 482
RockeT пишет:
Выводится только 1 значение, а нужно все
PHP:
скопировать код в буфер обмена
  1. <?PHP foreach ($voice as $row) { ?>
  2. <?PHP echo $row['voice'] ?>
  3. <?PHP } ?>
Строитель Отправлено: 08 Июня, 2016 - 21:34:39 • Тема: Работа с html • Форум: Вопросы новичков

Ответов: 6
Просмотров: 289
А чем отличается это
Test11 пишет:
<b>текст</b>asdas
<span>текст</span>
от этого
Test11 пишет:
Или так
<b>текст</b>asdas
<span>те....</span>
? Спрошу иначе - какую цель вы преследуете ?
Строитель Отправлено: 08 Июня, 2016 - 18:34:13 • Тема: Работа с тегами, алгоритм • Форум: Напишите за меня, пожалуйста

Ответов: 2
Просмотров: 43
Test11 пишет:
как найти слово или словочетание
PHP:
скопировать код в буфер обмена
  1. $text = 'как найти слово или словочетание';
  2. $patt = '~(слово).*?(словочетание)~iu';
  3. preg_match($patt, $text, $arr);
  4. echo '<pre>'; var_dump($arr);
  5. /*
  6. array(3) {
  7.   [0]=>
  8.   string(42) "слово или словочетание"
  9.   [1]=>
  10.   string(10) "слово"
  11.   [2]=>
  12.   string(24) "словочетание"
  13. }
  14. */
Строитель Отправлено: 04 Июня, 2016 - 10:46:59 • Тема: Извлечение содержимого в тэгах с определенным классом • Форум: XML и его обработка

Ответов: 2
Просмотров: 2328
phpnubiust пишет:
извлечь все имена (тэги с классом .name)
Как-то так
PHP:
скопировать код в буфер обмена
  1. $xml = '
  2.    <tr>
  3.        <td class="name">Александр Пушкин</td>
  4.        <td class="age">37</td>
  5.    </tr>
  6.    <tr>
  7.        <td class="name">Марсель Пруст</td>
  8.        <td class="age">46</td>
  9.    </tr>
  10. ';
  11.  
  12. $patt = '~<td class="name">.*</td>~';
  13. preg_match_all($patt, $xml, $arr);
  14.  
  15. echo '<pre>'; print_r($arr);
  16. /*
  17. Array
  18. (
  19.     [0] => Array
  20.         (
  21.             [0] => Александр Пушкин
  22.             [1] => Марсель Пруст
  23.         )
  24. )
  25. */
Строитель Отправлено: 01 Июня, 2016 - 17:50:28 • Тема: Подскажите пожалуйста что неправильно! • Форум: Вопросы новичков

Ответов: 16
Просмотров: 549
Red_man пишет:
Когда 'No correct' вылазиет, я обновляю страницу, а оно остается, как это исправить?
Надо сбрасывать данные, передаваемые методом POST. Я немного изменил ваш код, скопируйте и посмотрите результат.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.  
  4. //////////////////// Подключение к БД ///////////////////////
  5.  
  6. $db = mysqli_connect('localhost', 'user1', '12345');
  7. mysqli_select_db($db, bdsite1);//функция, подключаемся к БД
  8.  
  9. $select = mysqli_query ($db, "SELECT log, passw FROM tabl1");//запрос к БД
  10. if (!$select) exit ('#01 Ошибка');
  11. $row = mysqli_fetch_row ($select);
  12. if (!$row) exit ('#02 Ошибка');
  13.  
  14. $out = '';
  15.  
  16. if ($_POST['button']) {
  17.     $log = $_POST['log'];
  18.     $passw = $_POST['passw'];
  19.          
  20.     if ($log == $row[0] && $passw == $row[1]) {
  21.         $_SESSION['auth'] = $log;
  22.         $out = 'Enter to admin -> <a href="admin.php">admin</a>';
  23.     } else {
  24.         $_SESSION['err'] = 'Not correct';
  25.         header('Location: '. basename(__FILE__));
  26.         exit;
  27.     }
  28. }
  29.  
  30. $out .= (!empty($_SESSION['err']) ? $_SESSION['err'] : '');
  31. unset($_SESSION['err']);
  32.  
  33. ?>
  34.  
  35. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:www.w3.org/TR/xhtml1-transitional.dtd">
  36. <html xmlns="http://www.w3.org/1999/xhtml">
  37. <head>
  38. <meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
  39. <title> Админка и защита от взлома </title>
  40. </head>
  41. <body>
  42. <h1> Админка </h1>
  43. <div style="background-color:#D3D3D3; width:200px; padding:10px">
  44. <form method="post">
  45. Login:<br/>
  46. <input name="log" type="text" style="cursor:pointer"> <br/><br/>
  47. Password:<br/>
  48. <input name="passw" type="password" style="cursor:pointer"> <br/><br/>
  49. <input type="submit" name="button" value="Войти" style="cursor:pointer">
  50. </form>
  51. <?=$out?>
  52. </div>
  53. </body>
  54. </html>
А вообще, надо было в начале всё продумать, а потом уже набирать код. Например, у вас поля никак не проверяются, ни на длинну вводимого текста, ни фильтрации никакой нет. Для уведомлений о возможных ошибках можно было бы создать массив, и по мере появления ошибок, наполнять этот массив уведомлениями, ну и потом их выводить в браузер, чтоб юзер видел, что именно он написал не так.
Строитель Отправлено: 31 Мая, 2016 - 23:21:50 • Тема: Подскажите пожалуйста что неправильно! • Форум: Вопросы новичков

Ответов: 16
Просмотров: 549
Red_man В html-коде у вас небыло знака "=" (было так name"log"), из-за этого одна переменная не поступала в пост запрос. Вот так должно работать
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. //////////////////// Подключение к БД ///////////////////////
  4.  
  5. $db = mysqli_connect('localhost', 'user1', '12345');
  6. mysqli_select_db($db, bdsite1);//функция, подключаемся к БД
  7.  
  8. $select = mysqli_query ($db, "SELECT log, passw FROM tabl1");//запрос к БД
  9. if (!$select) exit ('#01 Ошибка');
  10. $row = mysqli_fetch_row ($select);
  11. if (!$row) exit ('#02 Ошибка');
  12.  
  13.  
  14. ?>
  15.  
  16.  
  17. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:www.w3.org/TR/xhtml1-transitional.dtd">
  18. <html xmlns="http://www.w3.org/1999/xhtml">
  19.  
  20. <head>
  21.  
  22. <meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
  23. <title> Админка и защита от взлома </title>
  24.  
  25. </head>
  26.  
  27. <body>
  28.  
  29. <h1> Админка </h1>
  30. <div style="background-color:#D3D3D3; width:200px; padding:10px">
  31. <form method="post">
  32. Login:<br/>
  33. <input name="log" type="text" style="cursor:pointer"> <br/><br/>
  34. Password:<br/>
  35. <input name="passw" type="password" style="cursor:pointer"> <br/><br/>
  36. <input type="submit" name="button" value="Войти" style="cursor:pointer">
  37. </form>
  38.  
  39. <?PHP
  40. if ($_POST['button'])
  41. {
  42. $log = $_POST['log'];
  43. $passw = $_POST['passw'];
  44.  
  45. if ( ($log == $row[0]) and ($passw == $row[1]))
  46. {
  47. $_SESSION['auth'] = $log;
  48. echo "Enter to admin -> <a href='admin.php' > admin </a>";
  49. }
  50. else
  51. {
  52. return exit ('Not correct');
  53. }
  54. }
  55. ?>
  56.  
  57.  
  58.  
  59. </body>
  60. </html>
Строитель Отправлено: 31 Мая, 2016 - 23:10:08 • Тема: Подскажите пожалуйста что неправильно! • Форум: Вопросы новичков

Ответов: 16
Просмотров: 549
Red_man Код целиком опубликуйте.

Страниц (106): В начало « ... 87 88 89 90 [91] 92 93 94 95 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB