PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (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:
скопировать код в буфер обмена
$str = 'какой-то текст ... болезнь связки правой голени ноги ... ' ; //или болезнь ноги
$pat = '~болезнь.*ноги~iu' ;
echo $arr [ 0] ; //болезнь связки правой голени ноги
Строитель
Отправлено: 17 Июня, 2016 - 23:56:46 • Тема: Склонения слова • Форум: Вопросы новичков
Ответов: 2 Просмотров: 158
malinovsku , написал функцию на основе регулярок. Шаблоны в регулярках наверное можно и оптимизировать. PHP:
скопировать код в буфер обмена
<?PHP
function incline( $int , $coder = ' программист' ) {
! preg_match ( '~^[2-9]+1$|^1$|^[1-9][0-9]+1$~' , $int ) ?
: $out = $int . $coder ; ! preg_match ( '~^[2-4]$|^[2-9]+[2-4]$|^1+[2-4]+[2-4]+$|^[1-9][0-9]+[2-4]+$~' , $int ) ?
: $out = $int . $coder . 'a' ; ! preg_match ( '~^[05-9]$|^[0-9]+[05-9]$|^\d*1+[1-4]$~' , $int ) ?
: $out = $int . $coder . 'ов' ; return $out ;
}
if ( ! empty ( $_POST [ 'int' ] ) ) { $out = incline( ( int) $_POST [ 'int' ] ) ;
} else {
$out = '' ;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<form method="POST" >
<input type="text" name="int"/>
<input type="submit" value="Жми"/>
</form>
<?= $out ?>
</body>
</html>
Строитель
Отправлено: 15 Июня, 2016 - 22:09:27 • Тема: Как сделать выборку из массива? • Форум: Вопросы новичков
Ответов: 7 Просмотров: 1712
Viper пишет: Строитель count() непосредственно в for() делать не стоит, лучше вынести перед циклом в переменную.
Ну, вроде бы всё согласно мануалу... Или вы имеете ввиду это замечание: "Вышеприведенный код может работать медленно, так как размер массива вычисляется в каждой итерации " ? Если да, то у меня оптимизированная запись, в которой count() вычисляется только один раз, в момент компиляции (а не перед каждой итерацией).
(Добавление)
Мелкий пишет: Зачем так сложно?
PHP:
скопировать код в буфер обмена
$result = [ ] ;
foreach ( $array as $item ) {
if ( ! isset ( $result [ $item [ 1
] ] ) or
$result [ $item [ 1
] ] [ 0
] < $item [ 0
] ) { $result [ $item [ 1] ] = $item ;
}
}
На более компактный вариант мне не хватило мышления )
Строитель
Отправлено: 15 Июня, 2016 - 19:32:28 • Тема: Как сделать выборку из массива? • Форум: Вопросы новичков
Ответов: 7 Просмотров: 1712
Странник пишет: Огромное спасибо! Все заработало
Подправил условие в цикле for . В работе ничего не изменилось, просто так проще читать код .
Строитель
Отправлено: 15 Июня, 2016 - 14:28:13 • Тема: Как сделать выборку из массива? • Форум: Вопросы новичков
Ответов: 7 Просмотров: 1712
Странник пишет: Подскажите как удалить из массива ненужные элементы, так, чтоб имена не повторялись, а из тех что повторялись, осталось Имя с максимальным возрастом
У меня варианта покороче не получилось, может кто-то напишет ещё PHP:
скопировать код в буфер обмена
$array = [
[ 52 , 'Петя' ] ,
[ 3 , 'Сергей' ] ,
[ 33 , 'Оксана' ] ,
[ 3 , 'Петя' ] ,
[ 10 , 'Сергей' ] ,
[ 12 , 'Петя' ] ,
[ 17 , 'Люда' ] ,
[ 24 , 'Сергей' ] ,
[ 8 , 'Надя' ]
] ;
$age = [ ] ;
$name = [ ] ;
$temp = [ ] ;
$result = [ ] ;
foreach ( $array as $arr ) {
foreach ( $arr as $key => $val ) {
if ( ! ( $key % 2) ) {
$age [ ] = $val ;
} else {
$name [ ] = $val ;
}
}
}
for ( $i = 0
, $y = count ( $age ) ; $i < $y ; $i ++ ) { if ( empty ( $temp [ $name [ $i ] ] ) ) { $temp [ $name [ $i ] ] = $age [ $i ] ;
} elseif ( $temp [ $name [ $i ] ] < $age [ $i ] ) {
$temp [ $name [ $i ] ] = $age [ $i ] ;
}
}
foreach ( $temp as $name => $age ) {
$result [ ] = [ $age , $name ] ;
}
Строитель
Отправлено: 12 Июня, 2016 - 20:33:00 • Тема: Генерация уникальных чисел • Форум: Вопросы новичков
Ответов: 4 Просмотров: 293
ilya2231 пишет: Вот мне хотелось бы сделать проверки уникальности числа. Если число неуникально, то перегенерировать его
В таких случаях, я думаю, правильнее было бы собрать все значения в массив, а потом случайным образом их выбирать из массива, при этом те значения, которые были выбраны, удалять из массива. При таком подходе вы получите рандомный выбор без повторений.
Строитель
Отправлено: 08 Июня, 2016 - 21:34:39 • Тема: Работа с html • Форум: Вопросы новичков
Ответов: 6 Просмотров: 289
А чем отличается это Test11 пишет: <b>текст</b>asdas
<span>текст</span>
от этого Test11 пишет: Или так
<b>текст</b>asdas
<span>те....</span>
? Спрошу иначе - какую цель вы преследуете ?
Строитель
Отправлено: 01 Июня, 2016 - 17:50:28 • Тема: Подскажите пожалуйста что неправильно! • Форум: Вопросы новичков
Ответов: 16 Просмотров: 549
Red_man пишет: Когда 'No correct' вылазиет, я обновляю страницу, а оно остается, как это исправить?
Надо сбрасывать данные, передаваемые методом POST. Я немного изменил ваш код, скопируйте и посмотрите результат. PHP:
скопировать код в буфер обмена
<?PHP
//////////////////// Подключение к БД ///////////////////////
$select = mysqli_query ( $db , "SELECT log, passw FROM tabl1" ) ; //запрос к БД if ( ! $select ) exit ( '#01 Ошибка' ) ; if ( ! $row ) exit ( '#02 Ошибка' ) ;
$out = '' ;
if ( $_POST [ 'button' ] ) {
$log = $_POST [ 'log' ] ;
$passw = $_POST [ 'passw' ] ;
if ( $log == $row [ 0] && $passw == $row [ 1] ) {
$_SESSION [ 'auth' ] = $log ;
$out = 'Enter to admin -> <a href="admin.php">admin</a>' ;
} else {
$_SESSION [ 'err' ] = 'Not correct' ;
}
}
$out .= ( ! empty ( $_SESSION [ 'err' ] ) ?
$_SESSION [ 'err' ] : '' ) ;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:www.w3.org/TR/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
<title> Админка и защита от взлома </title>
</head>
<body>
<h1> Админка </h1>
<div style="background-color:#D3D3D3; width:200px; padding:10px">
<form method="post">
Login:<br/>
<input name="log" type="text" style="cursor:pointer"> <br/><br/>
Password:<br/>
<input name="passw" type="password" style="cursor:pointer"> <br/><br/>
<input type="submit" name="button" value="Войти" style="cursor:pointer">
</form>
<?= $out ?>
</div>
</body>
</html>
А вообще, надо было в начале всё продумать, а потом уже набирать код. Например, у вас поля никак не проверяются, ни на длинну вводимого текста, ни фильтрации никакой нет. Для уведомлений о возможных ошибках можно было бы создать массив, и по мере появления ошибок, наполнять этот массив уведомлениями, ну и потом их выводить в браузер, чтоб юзер видел, что именно он написал не так.
Строитель
Отправлено: 31 Мая, 2016 - 23:21:50 • Тема: Подскажите пожалуйста что неправильно! • Форум: Вопросы новичков
Ответов: 16 Просмотров: 549
Red_man В html-коде у вас небыло знака "=" (было так name"log"), из-за этого одна переменная не поступала в пост запрос. Вот так должно работать PHP:
скопировать код в буфер обмена
<?PHP
//////////////////// Подключение к БД ///////////////////////
$select = mysqli_query ( $db , "SELECT log, passw FROM tabl1" ) ; //запрос к БД if ( ! $select ) exit ( '#01 Ошибка' ) ; if ( ! $row ) exit ( '#02 Ошибка' ) ;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:www.w3.org/TR/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
<title> Админка и защита от взлома </title>
</head>
<body>
<h1> Админка </h1>
<div style="background-color:#D3D3D3; width:200px; padding:10px">
<form method="post">
Login:<br/>
<input name="log" type="text" style="cursor:pointer"> <br/><br/>
Password:<br/>
<input name="passw" type="password" style="cursor:pointer"> <br/><br/>
<input type="submit" name="button" value="Войти" style="cursor:pointer">
</form>
<?PHP
if ( $_POST [ 'button' ] )
{
$log = $_POST [ 'log' ] ;
$passw = $_POST [ 'passw' ] ;
if ( ( $log == $row [ 0] ) and ( $passw == $row [ 1] ) )
{
$_SESSION [ 'auth' ] = $log ;
echo "Enter to admin -> <a href='admin.php' > admin </a>" ;
}
else
{
return exit ( 'Not correct' ) ; }
}
?>
</body>
</html>
Страниц (106): В начало « ... 87 88 89 90 [91] 92 93 94 95 ... » В конец
Powered by ExBB FM 1.0 RC1. InvisionExBB