Пару вопросов о PHP от новичка
#1
Отправлено 23 июля 2005 - 13:17
В перле есть конструкция
$text=<<TEXT;
<.>
TEXT
всё что внутри неё, принимается "как есть". как сделать такое в пхп?
2. Как лучше организовать выбор большого количества условий - через elseif или switch?
я делаю нечто вроде движка для сайта. там название страницы приходит вместе с URL. в зависиости от страницы нужно решить какой кусок хтмл кода выводить.
If you put water into a cup, it becomes the cup. You put water into a bottle and it becomes the bottle. You put it in a teapot it becomes the teapot. Now, water can flow or it can crash.
Be water my friend
#3
Отправлено 23 июля 2005 - 16:02
{
case "index":
dispmain();
break;
case "misc":
dispmisc();
brake;
}
можно ли вставить в условие не конкретное значение, а вообще чиcло?
If you put water into a cup, it becomes the cup. You put water into a bottle and it becomes the bottle. You put it in a teapot it becomes the teapot. Now, water can flow or it can crash.
Be water my friend
#4
Отправлено 23 июля 2005 - 16:34
а вообще например число состоящее из 4 цифр
как эту фразу описать? регулярными выражениями както?)
If you put water into a cup, it becomes the cup. You put water into a bottle and it becomes the bottle. You put it in a teapot it becomes the teapot. Now, water can flow or it can crash.
Be water my friend
#5
Отправлено 25 июля 2005 - 09:02
<?php
разная борода
if ($boroda) {
?>
sdjklfsjdklfsdf
<div>Zdesä pishesh prostoj HTML<img ...
</div>
<? } ELSE { ?>
здесь другой HTML ...
если я конечно правильно понял смысл твоей проблемы.
Верю в смерть после жизни, любовь после секса и в крем после бритья ...
#6
Отправлено 25 июля 2005 - 10:44
Выбор между switch и if/else диктуется не только количеством условий, но и их однородностью... Плюс это еще дело стиля и эстетики... Но в данном случае, мне кажется, проще всего использовать множественные if/else... Мое чутье мне подсказывает, что код будет проще...
Вот пример:
//$text=... $num_regex="[0-4]{4}"; if(!empty(preg_grep($text, $num_regex))){ // matched } else { // did not match }
(уточни порядок и количество аргументов у preg_grep()!)
Сообщение изменено: tomatensaft (25 июля 2005 - 10:53 )
#7
Отправлено 31 июля 2005 - 13:37
if (preg_match ("/^\d{4}$/i", $page)) {
а в выбор между elseif и switch, выбрал первое...
If you put water into a cup, it becomes the cup. You put water into a bottle and it becomes the bottle. You put it in a teapot it becomes the teapot. Now, water can flow or it can crash.
Be water my friend
#8
Отправлено 31 июля 2005 - 20:40
Если тебе надо проверить, является ли переменная числом, то есть функция is_numeric( $var); чтобы узнать длину строки, в т.ч. и состоящей из цифр, можно заюзать функцию strlen( $var );
Регулярные выражения нужны для более сложных вещей. Так что твой пример - это бред И запомни золотое правило, никогда не используй регурярных выражений, если их можно чем-то заменить, т.к. они очень тормозные. Ты конечно этого тормоза не заметишь, но поверь наслово или сходи на http://www.phpclub.ru/talk и воспользуйся поиском
Добавлено в [mergetime]1122835237[/mergetime]
Если ты ожидаешь от юзера ввода числа, воспользуйся функцией intval() http://www.php.net/intval
#9
Отправлено 01 августа 2005 - 10:19
если ты говоришь, что регулярные слишком тормознутые, то лучше так:
if (is_numeric($f) && strlen($f)==4)
Добавлено в [mergetime]1122884347[/mergetime]
в общем задача проста - через URL приходит название страницы которую надо показать. всего 4 варианта страниц с именем, и много страниц из базы данных имеющих порядковый номер в виде 0001 и т.д для этого и нужна была проверка.
если несложно, расскажи в 2 словах какими функциями надо обрабатывать данные пришедшие от поользователя. буть то через URL или форму.
If you put water into a cup, it becomes the cup. You put water into a bottle and it becomes the bottle. You put it in a teapot it becomes the teapot. Now, water can flow or it can crash.
Be water my friend
#10
Отправлено 01 августа 2005 - 10:32
Вообще, всё зависит от задачи! Если тебе ещё надо вставить текст в базу, то используй в дополнение mysql_escape_string() чтобы на какой-нить кавычке не получить варнинг)
И magic_quotes_gpc выруби, чтобы кавычки не экранировались уже на этапе передачи данных в скрипт)
#11
Отправлено 18 августа 2005 - 12:31
допустим есть массив:
Array ( [0] => Mercedes
[1] => BMW
[2] => Audi
[3] => BMW
[4] => Mercedes
[5] => Mercedes )
Как посчитать, сколько раз в нём повторяется каждый элемент? Тоесть так: Mercedes - 3
BMW - 2
Audi - 1
Копаюсь в списке функций для работы массива но ничего подобного не нашёл.
Добавлено в [mergetime]1124361075[/mergetime]
наверняка можно "в ручную" перебирать каждый элемент массива через foreach и сравнивать с теми что уже есть, записывая отдельно кол-во повторений. но до меня никак не дойдёт, как это осуществить
If you put water into a cup, it becomes the cup. You put water into a bottle and it becomes the bottle. You put it in a teapot it becomes the teapot. Now, water can flow or it can crash.
Be water my friend
#12
Отправлено 18 августа 2005 - 13:09
наверняка можно "в ручную" перебирать каждый элемент массива через foreach и сравнивать с теми что уже есть, записывая отдельно кол-во повторений.
<?php $array = array( 'Mercedes', 'BMW', 'Audi', 'BMW', 'Mercedes', 'Mercedes' ); foreach ( $array as $item ) { isset( $output[$item] ) ? $output[$item]++ : $output[$item] = 1; } echo '<pre>'; print_r( $output ); ?>
Вывод:
Array ( [Mercedes] => 3 [BMW] => 2 [Audi] => 1 )
Добавлено в [mergetime]1124363364[/mergetime]
Пример 1. array_count_values()
$array = array (1, "hello", 1, "world", "hello");
print_r(array_count_values ($array));
На выходе будет: Array
(
[1] => 2
[hello] => 2
[world] => 1
)
#13
Отправлено 18 августа 2005 - 13:20
If you put water into a cup, it becomes the cup. You put water into a bottle and it becomes the bottle. You put it in a teapot it becomes the teapot. Now, water can flow or it can crash.
Be water my friend
#15
Отправлено 18 августа 2005 - 13:30
буду впредь и мануалом пользоваться
Добавлено в [mergetime]1124364611[/mergetime]
Setor, а почему к полученному массиву (
[1] => 2
[hello] => 2
[world] => 1
)
нельзя обращаться поэлементно?
мне нужно выводить его в несколько другом формате, но он выводиться только через print_r!
If you put water into a cup, it becomes the cup. You put water into a bottle and it becomes the bottle. You put it in a teapot it becomes the teapot. Now, water can flow or it can crash.
Be water my friend
#16
Отправлено 18 августа 2005 - 13:42
то что нужно, ещё раз спасибо!юзай foreach( $output as $item => $value )
If you put water into a cup, it becomes the cup. You put water into a bottle and it becomes the bottle. You put it in a teapot it becomes the teapot. Now, water can flow or it can crash.
Be water my friend
#17
Отправлено 25 августа 2005 - 22:01
regexp - наоборот советую, не слушай всяких умников, которые вместо одного регулярного выражения ищут и чего-то там заменяют кучей str_replace.ов.
И вообще, использовать вместе html и код по крайней мере неразумно, все нормальные люди используют темплейты.