PHP

Получение id раздела по коду и id элемента по коду

02.08.2014 Bitrix ,

$iSectionID = CIBlockFindTools::GetSectionID(false,$_REQUEST['SECTION_CODE'],array("IBLOCK_ID" => I_CONTESTS));
$iElementID = CIBlockFindTools::GetElementID(false,$_REQUEST['CODE'],false,false,array("IBLOCK_ID" => I_CONTESTS));

Объединение многомерных массивов _array_merge_recursive

25.12.2013 php ,

function _array_merge_recursive($dest, $new) {
			if (!is_array($dest) &&  is_array($new)) return $new;
			if ( is_array($dest) && !is_array($new)) return $dest;
			if (!is_array($dest) && !is_array($new)) return array();
			foreach ($new as $k => $v) {
				if (is_array($v) && isset($dest[$k]) && !is_numeric($k)) {
					$dest[$k] = _array_merge_recursive($dest[$k], $v);
				} else if (!is_numeric($k)) {
					$dest[$k] = $new[$k];
				} else {
					$dest[] = $new[$k];
				}
			}
			return $dest;
		}

Первый массив

Array
(
    [s1] => Array
        (
            [0] => 1
        )

    [BASKER_QUANTITY] => Array
        (
            [0] => 1
        )

    [ORDER] => Array
        (
            [632] => Array
                (
                    [0] => 1
                )

        )

)

Второй массив

Array
(
    [s1] => Array
        (
            [0] => 1
        )

    [BASKER_QUANTITY] => Array
        (
            [0] => 1
        )

    [ORDER] => Array
        (
            [1249] => Array
                (
                    [0] => 1
                )

        )

)

Результат

Array
(
    [s1] => Array
        (
            [0] => 1
            [1] => 1
        )

    [BASKER_QUANTITY] => Array
        (
            [0] => 1
            [1] => 1
        )

    [ORDER] => Array
        (
            [1249] => Array
                (
                    [0] => 1
                )

            [1250] => Array
                (
                    [0] => 1
                )

        )

)

Отложенные функции как в BITRIX

16.03.2013 php, php скрипты , ,

header.php

$GLOBALS['TITLE'] = ''; //тут будет храниться заголовок страницы
//тут мы пишем наш код всех нужных нам компонентов
function settitle ($title) {
	// global $GLOBALS['TITLE'];
	$GLOBALS['TITLE'] = $title;
}
function showtitle () {
	echo "{TITLE}"; //выводим временный костыль для автозамены буферизированного контента
}
ob_start();
echo "<html><head><title>";
showtitle (); //выводим заголовок страницы
echo "</title></head><body>";

index.php

<?include('header.php')?>
<?php
settitle("Пример  gfbfdg fdgdfgfdgотложенных функций"); //обратите снивание заголовок наш уже вывелся выше
//но он был временно буферизирован и не попал на страничку
?>
<?include('footer.php')?>

footer.php

$content=ob_get_clean();//получаем весь буфер и очищаем его
//а теперь самое интересное замена титла на последний установленній
$content=preg_replace("!{TITLE}!", $GLOBALS['TITLE'], $content);
//выводим буферизированный контент
echo $content;

Вывод размер в КБ, МБ, ГБ

29.01.2013 php, php скрипты No comments ,

function fSize($file){
    $file = $_SERVER['DOCUMENT_ROOT'].$file;
    $FZ = ($file && @is_file($file)) ? filesize($file) : NULL;
    $FS = array("B","kB","MB","GB","TB","PB","EB","ZB","YB");
    return number_format($FZ/pow(1024, $I=floor(log($FZ, 1024))), ($i >= 1) ? 2 : 0) . ' ' . $FS[$I];
}
function fSize($FZ){
    $FS = array("B","kB","MB","GB","TB","PB","EB","ZB","YB");
    return number_format($FZ/pow(1024, $I=floor(log($FZ, 1024))), ($i >= 1) ? 2 : 0) . ' ' . $FS[$I];
}

Превьюшка видео с YouTube.com

26.11.2012 php ,

http://mrafalko.com/post/11/YouTube+API.+%D0%98%D0%BC%D1%8F+%D0%B8+thumbnail

BITRIX копирование ИБ

09.11.2012 Bitrix, php скрипты No comments ,


require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule("iblock");
    if(intval($_REQUEST["IBLOCK_ID_FIELDS"])>0){
        $bError = false;
        $IBLOCK_ID = intval($_REQUEST["IBLOCK_ID_FIELDS"]);
        $ib = new CIBlock;
        $arFields = CIBlock::GetArrayByID($IBLOCK_ID);
        $arFields["GROUP_ID"] = CIBlock::GetGroupPermissions($IBLOCK_ID);
        $arFields["NAME"] = $arFields["NAME"]."_new";
        unset($arFields["ID"]);
        if($_REQUEST["IBLOCK_TYPE_ID"]!="empty")
            $arFields["IBLOCK_TYPE_ID"]=$_REQUEST["IBLOCK_TYPE_ID"];
        $ID = $ib->Add($arFields);
            if(intval($ID)<=0)
                $bError = true;        
        if($_REQUEST["IBLOCK_ID_PROPS"]!="empty")
            $iblock_prop=intval($_REQUEST["IBLOCK_ID_PROPS"]);
        else
            $iblock_prop=$IBLOCK_ID;

        $iblock_prop_new = $ID;
        $ibp = new CIBlockProperty;
        $properties = CIBlockProperty::GetList(Array("sort"=>"asc", "name"=>"asc"), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>$iblock_prop));
        while ($prop_fields = $properties->GetNext()){
            if($prop_fields["PROPERTY_TYPE"] == "L"){
                $property_enums = CIBlockPropertyEnum::GetList(Array("DEF"=>"DESC", "SORT"=>"ASC"), Array("IBLOCK_ID"=>$iblock_prop, "CODE"=>$prop_fields["CODE"]));
                while($enum_fields = $property_enums->GetNext()){
                    $prop_fields["VALUES"][] = Array(
                      "VALUE" => $enum_fields["VALUE"],
                      "DEF" => $enum_fields["DEF"],
                      "SORT" => $enum_fields["SORT"]
                    );
                }
            }
            $prop_fields["IBLOCK_ID"]=$iblock_prop_new;
            unset($prop_fields["ID"]);
            foreach($prop_fields as $k=>$v){
                if(!is_array($v))$prop_fields[$k]=trim($v);
                if($k{0}=='~') unset($prop_fields[$k]);
            }
            $PropID = $ibp->Add($prop_fields);
            if(intval($PropID)<=0)
                $bError = true;
        }
        if(!$bError && $IBLOCK_ID>0)
            LocalRedirect($APPLICATION->GetCurPageParam("success=Y",array("success","IBLOCK_ID_FIELDS")));
        else 
            LocalRedirect($APPLICATION->GetCurPageParam("error=Y",array("success","IBLOCK_ID_FIELDS")));
    }
    $str .='<form action='.$APPLICATION->GetCurPageParam().' method="post"><table>';    
    if($_REQUEST["success"]=="Y") $str .='<tr><td colspan="2"><font color="green">ИБ успешно скопирован</font><br/></td></tr>';
    elseif($_REQUEST["error"]=="Y") $str .='<tr><td colspan="2"><font color="red">Произошла ошибка</font><br/></td></tr>';
    $str .='<tr><td colspan="2"><b>Копируем мета данные ИБ в новый ИБ</b><br/></td></tr>';
    $res = CIBlock::GetList(Array(),Array(),true);
        while($ar_res = $res->Fetch())
            $arRes[]=$ar_res;
    $str .='<tr><td>Копируем ИБ:<br><select name="IBLOCK_ID_FIELDS">';
    foreach($arRes as $vRes)    
        $str .= '<option value='.$vRes['ID'].'>'.$vRes['NAME'].' ['.$vRes["ID"].']</option>';
    $str .='</select></td>';
    $str .='<td>Копируем в новый ИБ свойства другого ИБ: *<br><select name="IBLOCK_ID_PROPS">';
    $str .='<option value="empty">';
    foreach($arRes as $vRes)    
        $str .= '<option value='.$vRes['ID'].'>'.$vRes['NAME'].' ['.$vRes["ID"].']</option>';
    $str .='</select></td></tr>';
    $str .='<tr><td colspan="2">Копируем ИБ в тип:<br><select name="IBLOCK_TYPE_ID">';
    $str .='<option value="empty">';
    $db_iblock_type = CIBlockType::GetList();
    while($ar_iblock_type = $db_iblock_type->Fetch()){
       if($arIBType = CIBlockType::GetByIDLang($ar_iblock_type["ID"], LANG))
          $str .= '<option value='.$ar_iblock_type["ID"].'>'.htmlspecialcharsex($arIBType["NAME"])."</option>";
    }
    $str .='</select></td></tr>';
    $str .='<tr><td colspan="2"><br/>* если значение не указано мета данные ИБ секции "Свойства" берутся из ИБ первого поля</td></tr>';
    $str .='<tr><td colspan="2"><input type="submit" value="копируем"></td></tr>';
    $str .='</table></form>';    
    echo $str;

Расчет по формуле php

26.09.2012 php, php скрипты No comments ,

Расчет по формуле php

function calculated_formula($elements_formula=array(), $formula='',$default=0){
	if(count($elements_formula)>0 && strlen($formula)>0){		
		$pattern = "/\[([A-Za-z_0-9]*?)\]/i";
		preg_match_all($pattern, $formula, $matches);
		foreach($matches[1] as $elemFormula){
			if(!isset($elements_formula[$elemFormula]) || empty($elements_formula[$elemFormula])){
				$elements_formula[$elemFormula] = $default;
			}
		}
		$replacement = "\$elements_formula$0";
		$result = preg_replace($pattern, $replacement, $formula);
		return eval("return $result;");
	}
}
$test['test1'] = '';
$test['test2'] = 3;
echo calculated_formula($test, '[test1]+[test2]+1',1);

динамические условия в if php

18.09.2012 php, php скрипты No comments ,

динамические условия в if php

	$z = '<=';
	$a = 6;
	$b = 6;
	$test = $a.$z.$b;
	
	if(eval("return $test;")){
		exit('cool;');
	}else{
		exit('bad');
	}

strstr

30.08.2012 php No comments ,

strstr($keyPostData, "TEST_")

Ищет в строке подстроку

29.08.2012 php, php скрипты No comments , ,

$fp = fopen($_SERVER[DOCUMENT_ROOT]."/tmp/counter.php", "w+"); // Открываем файл в режиме записи 
$mytext = "<? \$a='"; // Исходная строка
$mytext .= serialize($section); // Исходная строка
$mytext .= "';?>\r\n"; // Исходная строка
$test = fwrite($fp, $mytext); // Запись в файл
if ($test) echo 'Данные в файл успешно занесены.';
else echo 'Ошибка при записи в файл.';
fclose($fp); //Закрытие файла