Василий Р.
29 сообщений
#15 лет назад
С php пока что дружу плохо. Прошу помочь мне сделать такую конструкцию:

if( в строке адреса браузера нету слова 'news' и слова 'forum'' ) echo 1;
Антон С.
89 сообщений
#15 лет назад
Strstr() + $_SERVER
Андрей К.
1172 сообщения
#15 лет назад
if(!preg_match("/news|forum/",$_SERVER))
echo 1;
Николай Г.
601 сообщение
#15 лет назад
Оффтопик

Бросайте PHP, учите последовательно С, Pascal, С++, D - именно в этой последовательности. Если сильно захочется, выучите что-нибудь эзотерическое...
И только будучи подготовленным таким образом, если ну ооочень захочется и не будет противно - снова садитесь за PHP.
Из плюсов - у вас не будет таких проблем, да и просто хорошим программистом будете иметь возможность стать.
Василий Р.
29 сообщений
#15 лет назад
Всем спасибо за ответы. Особая благодарность Lisio. Проблема решена
Владимир Ф.
1322 сообщения
#15 лет назад
Оффтопик
dervinar, выучить-то не проблема, проблема потом с этими "знаниями" куда-то приткнуться.
В стоящие большие проекты новичка не возьмут. В оффлайн зачастую некуда (ну нет этих контор в городе. или места заняты. php деволопером, верстальщиком, 1с-программером - пожауйста, или зряплата у работающих не первый год такая, что плакать хочется и на пирожок дать ).
А маленьких проектов на том же фрилансе очень-очень мало.
Вот и учишь то, что и спрос имеет.

PS учил и pascal и cpp. сейчас учу perl
Николай Г.
601 сообщение
#15 лет назад
Оффтопик

PERL это именно та "сделка с совестью", на которую я тоже пошел. Вроде бы и скриптовый язык, и на хостингах и на всех есть, но и не php.
Кто ищет, тот всегда найдет, поверьте мне. Вы, как человек, освоивший pascal и cpp, сайты-однодневки даже на php(лучше всетаки perl) будете писать куда быстрее и продуктивнее.
Не говоря о том, спрос на Java программистов сейчас достаточно высок, попробуйте погуглить...
Как минимум появляется умение искать информацию, а не заходить с такими вопросами на форум...
Юрий Песков
338 сообщений
#15 лет назад
Оффтопик
спрос на джава програмистов в массе своей завязан на работу в офисе. по крайней мере гораздно больше,чем тот же пыхпых. А например у меня нет никакого желания возвращатсьяв офис.
Николай Г.
601 сообщение
#15 лет назад
Оффтопик
К сожалению, да... Может вылезем из оффтопа уже? Создал тему, ]https://forum.weblancer.net/themes/13666.html?page=1#p196716
Тут М.
626 сообщений
#15 лет назад
Цитата ("eXsofter"):
if( в строке адреса браузера нету слова 'news' и слова 'forum'' ) echo 1;

Цитата ("Lisio"):
if(!preg_match("/news|forum/",$_SERVER))
echo 1;

Фикус в том, что в задании говорится И, а в решении ИЛИ. Если строго следовать заданию должно быть так:
if(!preg_match("/news.*forum|forum.*news/",$_SERVER))
echo 1;
Фрилансер У.
248 сообщений
#15 лет назад
Джоэла на вас нет.
if (strpos($_SERVER, 'forum') === false && strpos($_SERVER,'news') === false)
{
echo 1;
}
Андрей К.
1172 сообщения
#15 лет назад
Цитата ("Demiurh"):
Фикус в том, что в задании говорится И, а в решении ИЛИ.

Двойка с минусом. В решении говорится, что в адресе нет ни news, ни forum. А в вашем случае - лишнее расходование времени сервера.

Цитата ("werewolf"):
Джоэла на вас нет.

Во-первых, очень спорно, что два stripos быстрее одного preg_match. Профайлер вам в помощь. Во-вторых, слишком тонка грань между оптимальностью скорости выполнения кода и его читабельностью.
Добавив еще 2 таких условия, вы смените национальность на индусскую.
Фрилансер У.
248 сообщений
#15 лет назад
А мне кажется, наоборот код яснее, чем при использовании preg_match.
Программист не знающий о регулярных выражениях сможет разобраться.
Андрей К.
1172 сообщения
#15 лет назад
Цитата ("werewolf"):
А мне кажется, наоборот код яснее, чем при использовании preg_match.

Зависит от того, насколько привычно работать с регулярками.

Цитата ("werewolf"):
Программист не знающий о регулярных выражениях сможет разобраться.

Программист не знающий о регулярных выражениях - не программист.
Фрилансер У.
248 сообщений
#15 лет назад

$max = 100000;
$uri = strtolower(';);

$start = microtime(true);
for($i=0;$i<$max;$i++)
{
if (strpos($uri, 'forum') === false && strpos($uri,'news') === false)
{

}
}
$end1 = microtime(true)-$start;


$start = microtime(true);
for($i=0;$i<$max;$i++)
{
if (!preg_match("/news|forum/",$uri))
{

}
}
$end2 = microtime(true)-$start;


$start = microtime(true);
for($i=0;$i<$max;$i++)
{
if (!preg_match("/news.*forum|forum.*news/",$uri))
{

}
}
$end3 = microtime(true)-$start;


echo "strpos: $end1\n";
echo "preg_match(1): $end2\n";
echo "preg_match(2): $end3\n";


strpos: 0.0811440944672
preg_match(1): 0.225165843964
preg_match(2): 0.290424108505

strpos: 0.0796511173248
preg_match(1): 0.223737001419
preg_match(2): 0.28486084938

strpos: 0.0807681083679
preg_match(1): 0.22413110733
preg_match(2): 0.283967018127

strpos: 0.0791609287262
preg_match(1): 0.236745119095
preg_match(2): 0.287521123886

strpos: 0.082291841507
preg_match(1): 0.229388952255
preg_match(2): 0.285306930542
Фрилансер У.
248 сообщений
#15 лет назад
А вот stripos медленный, 0.336187124252. Он каждый раз приводит строки к нижнему регистру в цикле.
Александр Ш.
12 сообщений
#15 лет назад
Оффтопик

Как справедливо заметил Lisio,
Решение с preg_match гораздо легче для восприятия человеком (коим иногда является программист , чем конструкция с strpos.
И стоит использовать именно его, если речь не идет о хардкорной оптимизации.
Андрей К.
1172 сообщения
#15 лет назад
Цитата ("werewolf"):
А вот stripos медленный

Скорее всего и preg_match("/news|forum/i",$uri) при своем модификаторе i будет медленнее. В любом случае приведение к нижнему регистру нужно делать до обработки, так быстрее.

А если добавить еще 2 условия? К примеру, guestbook и page. Насколько нагроможденными стану условия и кто быстрее будет?
Фрилансер У.
248 сообщений
#15 лет назад
Цитата ("Lisio"):
А если добавить еще 2 условия? К примеру, guestbook и page.

Второе регулярное выражение отбросим.

strpos: 0.0800879001617
preg_match(1): 0.255738973618

strpos: 0.0806710720062
preg_match(1): 0.258882045746

strpos: 0.0806658267975
preg_match(1): 0.25576210022
Фрилансер У.
248 сообщений
#15 лет назад
Добавил модификатор i, /news|forum|guestbook|page/i. Не уступает в скорости
preg_match(1): 0.25576210022
preg_match(1): 0.257275819778
preg_match(1): 0.257957935333