Сен 08
remitmasterJavaScript JavaScript, RegExp
/**
* @param {string} - Email
* @param {string} - (true/false) - определяет строгую
* проверку при которой пробелы до и после адреса считаются ошибкой
* @returns {Boolean} - (true/false)
*/
function isValidEmail (email, strict)
{
if ( !strict )
email = email.replace(/^\s+|\s+$/g, '');
return (/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i).test(email);
}
найдено
Сен 08
remitmasterJavaScript, jQuery js
var ar_str = $('#INPUT').val().split("");
var r = /\d{1}/;
var nv = '';
for(var i = 0; i < ar_str.length; i++)
{
if(r.test(ar_str[i]))
nv += ar_str[i];
}
$('#INPUT').val(nv);
Сен 07
remitmasterApache
RewriteEngine on
RewriteCond %{HTTP_HOST} !^(www\.)(([a-z0-9_-]+)\.)+\w{2,4}$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=permanent,L]
Если кратко, то здесь условие проверяет домен на соответствие виду www.yoursite.com или www.subdomain.yoursite.com и т.д. А знак «!» говорит о том, что нам нужны домены, которые не попадают под это условие, то есть как раз yoursite.com и subdomain.yoursite.com. После чего происходит редирект на этот домен с добавлением www.
подсмотрено
Авг 26
remitmaster1С-Битрикс, PHP bitrix api, header, отложенные функции Bitrix
Первое что хочу сказать, они используются для вывода чего либо в хидере, но не просто вывода, а зависящего от определенных параметров которые передаются на самой странице.
На примере, допустим нам нужно в левую колонку (header.php) выводить список товаров, но по определенному условию, если на странице находится товар с ценой больше 1000 р. или еще по какому-либо критерию. Важно то, что мы не знаем значение по которому можно определить это и оно было-бы нам доступно в header.php, только если это $_GET параметр, но я думаю все цены товара «поднимать» в $_GET это бред.
Вот для передачи значения в header и служат отложенные функции. Заголовок странице устанавливается тоже так, передача значения идет с самой страницы.
С помощью метода $APPLICATION->SetPageProperty(‘KEY’, ‘VALUE’) на самой странице добавляем в ее свойства наше значение, в примере с ценой это будет примерно так:
...
...
$APPLICATION->SetPageProperty(
'MAX_PRICE',
$i_ProductPrice
);
...
...
Далее пишем функцию и ложем ее в init.php например,
More
Авг 23
remitmaster1С-Битрикс, PHP bitrix api, php_parser
Недавно на форуме был задан вопрос, как можно определить статическую страницу в битриксе. Видимо у людей мало опыта и они просто не знают что изначально все публичные файла сайта битрикса статичные, а уже потом на них можно добавить вывод динамического содержимого.
More
Авг 17
remitmasterPHP php, php array, php count, php массивы
Иногда бывает под вечер зависнешь на какой-нибудь проверке и не можешь понять почему логика не складывается. Оказывается просто потому что, не логично работают некоторые участки системы.
В частности столкнулся вот только что с функцией count в php для подсчета значений в массиве. В голове всегда было воспоминание что с ней что-то не так, вот пришлось их обновлять.
//$i = 1.05; // true
//$i = 1; // true
//$i = '1'; // true
$i = array();// false
var_dump(count($i) > 0);
Логичнее наверное сделать что если переменная не массив, то возвращать NULL или false, так нет же надо возвращать 1.
Если var не является массивом или объектом, реализующим интерфейс Countable, будет возвращена 1. За одним исключением: если var — NULL, то будет возвращён 0.
Авг 15
remitmasterIE ie6, заглушка для ie
Безусловно в жизни web разработчика ie6 это проблема. Для меня все версии ie, мягко говоря, не вызывают доверия. Снипед для ie6, но я жду не дождусь когда и от ie7 я с большим удовольствием его поставлю. От ie8 и выше, жить становится лучше.
Пишем в /bitrix/php_interface/init.php что-то типа:
$user_agent = $_SERVER['HTTP_USER_AGENT'];
if (stripos($user_agent, 'MSIE 6.0') !== false && stripos($user_agent, 'MSIE 8.0') === false && stripos($user_agent, 'MSIE 7.0') === false)
header ("Location: /ie6/ie6.html");
Создаем папку типа /ie6/ и редиректим всех «счастливых» обладателей туда. Ну чтобы их совсем не обижать добавим специальную заглушку типа этой
Авг 06
remitmasterAJAX, JavaScript js, navigation js
Итак задача, нужно сохранять состояние страницы после ajax запроса. Для этого приспособили метки у ссылок, URL будет вот такого вида http://site.ru/#/key:val/key1:val1/keyN:valN/
В js далеко не гуру, но все работает и нативно.
var Navigation = function()
{
this.isHash = function(){return (window.location.href.indexOf('#') !== -1 && window.location.hash.length > 1);};
/**
* Возвращает все параметры из url в виде объекта
*/
this.getQueryParams = function(){
if(this.isHash())
{
var _ar = window.location.hash.replace('#', '').split('/');
var _ob = {};
for(var i=0; i < _ar.length; i++){
if(_ar[i] !== "")
_ob[i] = _ar[i];
}
var returnObject = {};
for(var j in _ob){
if (_ob.hasOwnProperty(j)) {
var _ar_params = _ob[j].split(':');
returnObject[_ar_params[0]] = _ar_params[1];
}
}
return returnObject;
}
return false;
};
/**
* Устанавливает строку параметров, если есть сотрет что было
*/
this.setHash = function(objectParsms){
var ar = [], j = 0;
for(var i in objectParsms){
j++; ar[j] = i + ':' + objectParsms[i];
}
var hashString = ar.join('/');
if(hashString.length > 0)
window.location.hash = '#' + hashString + '/';
};
this._isEmptyObject = function(Obj)
{
var i = 0;
for(var o in Obj){
i++;
}
return i;
};
this._isKeyObject = function(obj, key){
for(var o in obj)
{
if(o === key)
return true;
}
return false;
};
/**
* Добавляет параметр в url, если параметр уже есть то заменит значение на новое
*/
this.addHashParam = function(objectParams){
if(this.isHash())
{
var params = this.getQueryParams();
for(var o in objectParams){
if(this._isKeyObject(params, o)){
params[o] = objectParams[o];
}
}
var arRes = [], k = 0;
for(var or in params){
k++;arRes[k] = or + ':' + params[or];
}
var str_hash = arRes.join('/');
var ar = [], j = 0;
for(var i in objectParams){
if(!this._isKeyObject(params, i)){
j++; ar[j] = i + ':' + objectParams[i];
}
}
if(ar.length > 0){
str_hash += ar.join('/') + '/';
}
else{
str_hash += '/';
}
window.location.hash = str_hash;
}
else
{
this.setHash(objectParams);
}
};
/**
* Удаляет параметр из url можно указывать несколько, принимает массив ключей
*/
this.delHashParams = function(arParams){
if(this.isHash())
{
var params = this.getQueryParams();
for(var a = 0; a <= arParams.length; a++){
delete params[arParams[a]];
}
if(this._isEmptyObject(params) > 0)
this.setHash(params);
else
window.location.hash = '';
};
};
};
Делать такую навигацию весьма трудоемко, но позволяет немного шире использовать ajax.
Older Entries Newer Entries
Свежие комментарии