Я (так как у меня первый пост), даю задание по написанию в php. Описываю пункты.
Кто-то его выполняет, далее тот, кто выполнил, дает свое задание, и тот, кто его выполнит, дает далее задание свое.
Надеюсь смысл понятен.
Мое задание:
Автоматическая замена смайлов с циклом!
Тоесть, чтоб не надо было каждый раз писать str_replace();
А просто достаточно было добавить значения в массив\базу
Спустя 58 минут, 17 секунд (28.06.2012 - 16:46) FatCat написал(а):
function do_smiles($txt=""){
$smiles = array(
':)' => 'smile.gif',
';)' => 'smile1.gif',
':D' => 'lol.gif',
':P' => 'bleh.gif'
);
foreach($smiles as $k=>$v)
$txt = str_replace($k,'<img src="'.$v.'" alt="'.$k.'" border="0">',$txt)
return $txt;
}
Спустя 5 минут, 51 секунда (28.06.2012 - 16:52) FatCat написал(а):
А теперь задание.
"Знак двоеточия (:) в тексте" - здесь не должно заменять.
"Знак двоеточия (не .. а :) в тексте" - здесь тоже не должно заменять.
"Знак двоеточия (:) в тексте" - здесь не должно заменять.
"Знак двоеточия (не .. а :) в тексте" - здесь тоже не должно заменять.
Спустя 6 минут, 8 секунд (28.06.2012 - 16:58) twin написал(а):
А зачем цикл то?
function do_smiles($txt = ""){
$smiles = array(
':)' => 'smile.gif',
';)' => 'smile1.gif',
':D' => 'lol.gif',
':P' => 'bleh.gif'
);
$txt = str_replace(array_keys($smiles), $smiles, $txt);
return $txt;
}
Спустя 1 минута, 28 секунд (28.06.2012 - 17:00) TMake написал(а):
function do_smiles($txt=""){
$smiles = array(
array('pattern' => ':)', 'value' => 'smile.gif'),
array('pattern' => ';)', 'value' => 'smile1.gif'),
array('pattern' => ':D', 'value' => 'lol.gif'),
array('pattern' => ':P', 'value' => 'bleh.gif')
);
return requrse_smiles($smiles, 0, $text);
}
function requrse_smiles($array, $num, $txt){
$txt = str_replace($array[$num]['pattern'],'<img src="'.$array[$num]['value'].'" alt="'.$array[$num]['pattern'].'" border="0">',$txt);
$num++;
return (count($array)>$num)? requrse_smiles($array, $num, $txt): $txt;
}
Спустя 18 минут, 20 секунд (28.06.2012 - 17:18) pak написал(а):
За Вами не успеть
давайте еще)
давайте еще)
Спустя 45 минут, 11 секунд (28.06.2012 - 18:03) Zzepish написал(а):
pak
дык уже есть
дык уже есть
Цитата |
А теперь задание. "Знак двоеточия ( в тексте" - здесь не должно заменять. "Знак двоеточия (не .. а в тексте" - здесь тоже не должно заменять. |
Вместо смайлов там : ) (без пробела)
Спустя 6 минут, 31 секунда (28.06.2012 - 18:10) pak написал(а):
Zzepish
Решение предоставил stepan
Решение предоставил stepan
Спустя 4 минуты, 28 секунд (28.06.2012 - 18:14) Zzepish написал(а):
pak
а. я проворонил.
stepan
С тебя задание же)
а. я проворонил.
stepan
С тебя задание же)
Спустя 15 часов, 12 минут, 32 секунды (29.06.2012 - 09:27) TMake написал(а):
Цитата (Zzepish @ 28.06.2012 - 19:14) |
С тебя задание же) |
Сделать из
HeLlO WoRlD!строку
!dLrOw oLlEhне используя strrev strrev_utf8
Спустя 52 минуты, 33 секунды (29.06.2012 - 10:19) Placido написал(а):
$a = 'HeLlO WoRlD!';
function case_reverse($matches)
{
$upper = isset($matches[1]) ? $matches[1] : '';
$lower = isset($matches[2]) ? $matches[2] : '';
return strtolower($upper) . strtoupper($lower);
}
echo implode('', array_reverse(str_split(preg_replace_callback('#([A-Z])|([a-z])#u', 'case_reverse', $a))));
//!dLrOw oLlEh
Спустя 1 час, 9 минут, 8 секунд (29.06.2012 - 11:29) Zzepish написал(а):
Placido
Теперь ты пишишь задание =)
Теперь ты пишишь задание =)
Спустя 44 минуты, 28 секунд (29.06.2012 - 12:13) Placido написал(а):
Написать функцию проверки валидности регулярного выражения (регулярка может быть любой).
Спустя 2 дня, 21 час, 16 минут, 7 секунд (2.07.2012 - 09:29) TMake написал(а):
Цитата (Placido @ 29.06.2012 - 13:13) |
Написать функцию проверки валидности регулярного выражения (регулярка может быть любой). |
Какое тз - такой и результат:
function ifReg($pattern,$data){
return (preg_match($pattern, $data) == 1)? true: false;
}
Спустя 8 минут, 28 секунд (2.07.2012 - 09:38) TMake написал(а):
думаю будет интересным это задание -
Цитата (FatCat @ 28.06.2012 - 17:52) |
А теперь задание. "Знак двоеточия ( в тексте" - здесь не должно заменять. "Знак двоеточия (не .. а в тексте" - здесь тоже не должно заменять. |
Спустя 54 минуты, 38 секунд (2.07.2012 - 10:32) Placido написал(а):
Цитата (stepan @ 2.07.2012 - 09:29) | ||
Какое тз - такой и результат:
|
Не-а. Вводим
ifReg('/{[]{[())/', '');
И получаем
Warning: preg_match(): Compilation failed: missing terminating ] for character class at offset 8 in C:\Users\Public\Apache2.2\htdocs\BLOG\test2.php on line 4
А нужно, чтобы в случае невалидной регулярки (как та, что выше, например) мы получали что-то внятное, например, "Регулярное выражение составлено неверно".
Спустя 9 минут, 22 секунды (2.07.2012 - 10:42) TMake написал(а):
Быдло код всех нас спасет :lol:
function ifReg($pattern,$data){
return @(preg_match($pattern, $data) == 1)? true: 'Регулярное выражение составлено неверно';
}
Спустя 9 минут, 12 секунд (2.07.2012 - 10:51) Placido написал(а):
Цитата (stepan @ 2.07.2012 - 10:42) |
function ifReg($pattern,$data){ |
Не спасет )) Вводим валидную регулярку
echo ifReg('/([ddd])/', '');
И получаем
Регулярное выражение составлено неверно
Спустя 8 минут, 18 секунд (2.07.2012 - 10:59) TMake написал(а):
Цитата (Placido @ 2.07.2012 - 11:51) |
Не спасет )) Вводим валидную регулярку |
И в чем же она не валидна?
Спустя 2 минуты, 28 секунд (2.07.2012 - 11:02) Placido написал(а):
Цитата (stepan @ 2.07.2012 - 10:59) | ||
И в чем же она не валидна? |
В том-то и дело. Она валидна, а мы получаем сообщение, что она составлена неверно.
Спустя 4 минуты, 15 секунд (2.07.2012 - 11:06) TMake написал(а):
Цитата (Placido @ 2.07.2012 - 12:02) |
Она валидна |
Где же она валидна для пустой строки?
Объясни а то я не уловлю мысль...
Спустя 7 минут, 5 секунд (2.07.2012 - 11:13) Placido написал(а):
Не в пустой строке дело. В твоей функции и в случае валидной, и в случае невалидной регулярки получаем одно и то же сообщение - "Регулярное выражение составлено неверно".
Спустя 3 минуты, 11 секунд (2.07.2012 - 11:16) Invis1ble написал(а):
я вот так наговнокодил по-быстрому :P
Свернутый текст
function validate_regexp($regexp) {
set_error_handler(function ($errno, $errstr) {
if ($errno == 2)
throw new Exception('Invalid regexp', 0);
});
try {
preg_match($regexp, '');
$result = true;
}
catch (Exception $e) {
$result = $e->getCode() !== 0;
}
restore_error_handler();
return $result;
}
Спустя 4 минуты, 5 секунд (2.07.2012 - 11:20) TMake написал(а):
Цитата (Placido @ 2.07.2012 - 12:13) |
Не в пустой строке дело. В твоей функции и в случае валидной, и в случае невалидной регулярки получаем одно |
Понял чего ты хотел - нужно было сделать как показал Инвиз, обработку исключений подключить.
Спустя 7 минут, 18 секунд (2.07.2012 - 11:27) Placido написал(а):
Еще вариант без исключений )
Свернутый текст
function regex_check ($regex)
{
ob_start();
preg_match($regex, '');
$error = ob_get_clean();
return $error ? 'Ошибка в регулярном выражении!' : 'Регулярное выражение валидно.';
}
Спустя 6 минут, 39 секунд (2.07.2012 - 11:34) TMake написал(а):
Цитата (Placido @ 2.07.2012 - 12:27) |
Еще вариант без исключений ) |
Интересный способ
Спустя 1 минута, 50 секунд (2.07.2012 - 11:36) Invis1ble написал(а):
Цитата |
Интересный способ |
согласен, только в реальных условиях вполне вероятно неработоспособный
ini_set('display_errors', 'Off');
echo regex_check('#'); // Регулярное выражение валидно.
Спустя 8 минут, 41 секунда (2.07.2012 - 11:45) Invis1ble написал(а):
var_dump(filter_var('##', FILTER_VALIDATE_REGEXP));
Правда у меня выдает все время false и warning, судя по всему баг пыхи
Цитата |
Warning: filter_var(): 'regexp' option missing in ... |
Update.
Это не баг, а не правильно вызвана функция. Надо почаще в ман заглядывать :D
Спустя 1 час, 9 минут, 31 секунда (2.07.2012 - 12:54) TMake написал(а):
Цитата (Invis1ble @ 2.07.2012 - 12:36) |
согласен, только в реальных условиях вполне вероятно неработоспособный |
Инвиз - за тобой задание
Спустя 3 часа, 37 минут, 20 секунд (2.07.2012 - 16:31) Invis1ble написал(а):
Чет на ум ничего не приходит... Да и имеет смысл ли? ТС пропал куда-то, а мы то с вами такие задачки итак порешаем )
Спустя 1 час, 38 минут, 53 секунды (2.07.2012 - 18:10) inpost написал(а):
Я могу задать, Инвиз уже знает задачку.
Есть массив:
1=>'x'
2=>'y'
3=>'x'
4=>'z'
5=>'a'
6=>'a'
Задача: найти копии, то есть вернуть ключи: 1,3,5,6 с их значениями. Те данные, которые не дублируются - в финальном результате не должны быть.
Есть массив:
1=>'x'
2=>'y'
3=>'x'
4=>'z'
5=>'a'
6=>'a'
Задача: найти копии, то есть вернуть ключи: 1,3,5,6 с их значениями. Те данные, которые не дублируются - в финальном результате не должны быть.
Спустя 1 час, 10 минут, 39 секунд (2.07.2012 - 19:21) pak написал(а):
<?php
$arr = array(
1 => 'a',
2 => 'y',
3 => 'x',
4 => 'z',
5 => 'a',
6 => 'a',
7 => 'x'
);
for($i = 1; $i <= count($arr); $i++)
{
for($k = 1 + $i; $k <= count($arr); $k++)
{
if($arr[$i] == $arr[$k])
{
$key[$i] = $arr[$i];
$key[$k] = $arr[$k];
}
}
}
print_r($key);
?>
Выводит:
Array
(
[1] => a
[5] => a
[6] => a
[3] => x
[7] => x
)
Спустя 27 минут, 19 секунд (2.07.2012 - 19:48) Placido написал(а):
$array = array(1=>'x', 2=>'y', 3=>'x', 4=>'z', 5=>'a', 6=>'a');
$count_values = array_count_values($array);
foreach ($array as $key => $value) {
if($count_values[$value] === 1)
unset($array[$key]);
}
print_r($array);//Array ( [1] => x [3] => x [5] => a [6] => a )
Спустя 22 часа, 48 минут, 11 секунд (3.07.2012 - 18:36) Zzepish написал(а):
Invis1ble
Нифига я не пропал) просто меня на дачу загребли на 4 дня)
Нифига я не пропал) просто меня на дачу загребли на 4 дня)