Полезные коды в PHP и MySQL

18.96K
.
<meta name="theme-color" content="green">


Мета—тег который меняет цвет адресной строки в вашем браузере.
Прикрепленные файлы:
.

Функция управляемого рандома

function rundom($percent = 50) {
   return (mt_rand(1, 100) + (100 - (100 - $percent)) > 100 ? 1 : 0);
}

Использовать так:
/*Укажите в функции rundom значение от 0 до 100, например: rundom(75) , функция будет возвращать 0 или 1, если выпадет 1, то сработал диапазон в 75%, если 0 , то 25%*/
if(rundom(20) == 1) {
  echo 'Шанс 20%';
} else {
  echo 'Шанс 80%';
}

Проверить можете на выборке, например в 1млн. так:
$m = 0;$n = 0;
for($i = 0; $i < 1000000; $i++) {
  if(rundom(20) == 1) {
     $n++;
  } else {
    $m++;
  }
}
echo $n . '|' . $m;

При данном условии приблизительно будет 200000/800000 соотношение выпадений.
---
Функция отлично пригодится для игроделов.
.
<META HTTP-EQUIV="Refresh" CONTENT="N;URL=http://sait.ru">


Этот мета тег редирект,также можно с ним редиректовать как весь сайт,так и отдельный файл
.
ДоХтор
Рекурсивный фильтр массивов (+/-)
// Использование
filter_array($array);


function filter_array(&$arr) {
    foreach ($arr as $key => &$item) {
        !is_array($item) ?: filter_array($item);

        if (empty($item)) {
            unset($arr[$key]);
        }
    }
}


Рекурсивное удаление всех папок и файлов (+/-)
<?php

function rm($dir) {
    $dh = opendir($dir);

    while (($file = readdir($dh)) !== false) {
        if ($file != '.' && $file != '..') {
            is_dir($dir .'/'. $file) ? rm($dir .'/'. $file) : unlink($dir .'/'. $file);
        }
    }

    closedir($dh);

    return rmdir($dir) ? true : false;
}

rm('.');


Временно (+/-)
function varName( $v ) {
    $trace = debug_backtrace();
    $vLine = file( __FILE__ );
    $fLine = $vLine[ $trace[0]['line'] - 1 ];
    preg_match( "~\\$(\w+)~", $fLine, $match );
    print_r( $match );
}

$foo = "knight";
$bar = array( 1, 2, 3 );
$baz = 12345;

varName( $foo );
varName( $bar );
varName( $baz );


временно (+/-)
class Bar
{
    private $value;

    public function __construct(array $val)
    {
        $this->value = $val;
    }

    public function get()
    {
        return $this->value;
    }
}

$bar = new Bar([5]);

$closure = function ($val) {
    $this->value = $val;
};

$bind = $closure->bindTo($bar, Bar::class);

$bind("\nЛюбое значение\n");
echo $bar->get();

$bind("\nЕщё значение\n");
echo $bar->get();


* (+/-)
Option Explicit
Public WithEvents Placeholder As Application

Public Sub RunPlaceholder()
    Set Placeholder = Application
End Sub

Public Sub EndPlaceholder()
    Set Placeholder = Nothing
End Sub

Private Sub Placeholder_WindowSelectionChange(ByVal Sel As Selection)
    Dim filename As String
    filename = left(ActiveDocument.name, 8)
    With Sel.Paragraphs.First.Range
        If filename = "Документ" And left(.Text, 1) = "[" Then
            Call TextDelete
            Sel.Collapse
        End If
    End With
End Sub

Private Sub TextDelete()
    Dim txt As String, lenght As Byte
    On Error Resume Next
    lenght = True
    txt = GetText()
    Do While lenght > 0
        lenght = Len(txt) - 1
        txt = left(txt, lenght)
        Selection.Text = txt
        Sleep (0.008)
    Loop
End Sub

Private Function GetText()
    Dim rng As Range, txt As String
    Set rng = Selection.Range.Paragraphs(1).Range
    txt = rng.Text
    rng.SetRange Start:=rng.Start, End:=rng.End - 1
    rng.Text = ""
    GetText = txt
End Function

Private Sub Sleep(ByVal time As Currency)
    Dim started As Single: started = Timer
    Do: DoEvents: Loop Until Timer - started >= time
End Sub
'==================================================================================================
Sub Письмо()
'
' Письмо Макрос
' Макрос записан 24.04.2013 panchenko
' Изменён 23.01.2019 Бибик Э.В.
    
    Dim fname As String, msg As String, inpt As String
    
    fname = "M:\Бланк письма.doc"
    msg = vbNewLine & vbTab & vbTab & "ВНИМАНИЕ!" & vbNewLine & _
        vbNewLine & "В бланке используется активный шаблон." & vbNewLine & _
        "Текст в квадратных скобках - временная метка, при клике по которой происходит её удаление." & _
        vbNewLine & vbNewLine & "Для отключения активного шаблона запустите повторно макрос ""Письмо""" & _
        "и кликните по кнопке ""Cancel""" & _
        vbNewLine & vbNewLine & "Пример оформления письма находится на:"
    inpt = InputBox(msg, "Информационное сообщение", "M:\Пример письма.jpg") ', -15250, 6800
    
    If inpt <> "" Then
        Documents.Add Template:="Normal", NewTemplate:=False, DocumentType:=0
        Call ThisDocument.RunPlaceholder
        With Selection.PageSetup
            .TopMargin = CentimetersToPoints(2)
            .BottomMargin = CentimetersToPoints(2)
            .LeftMargin = CentimetersToPoints(3)
            .RightMargin = CentimetersToPoints(1)
            .HeaderDistance = CentimetersToPoints(1.25)
            .FooterDistance = CentimetersToPoints(1.25)
        End With
        Selection.InsertFile filename:=fname
    Else
        Call ThisDocument.EndPlaceholder
        MsgBox "Операция отменена! Активный шаблон отключен!", vbOKOnly + vbInformation, "Внимание!"
    End If
    
End Sub
.
(\/)____o_O____(\/)

ДоХтор, Демо только ссылку убирает

.
# Koenig (30.10.2017 / 08:41)
ДоХтор, Демо только ссылку убирает
Так ты там теги для удаления пропиши - она их удалит.
.
Koenig
(\/)____o_O____(\/)

ДоХтор, Не увидел гг, утро, кстати почему не массив тегов?
Просто если я добавлю пробел к запятой, нужен будет trim

.
ДоХтор
Добавлено: 30.10.2017 / 13:29
# Koenig (30.10.2017 / 10:39)
ДоХтор, утро.
Утро ))
кстати почему не массив тегов?
Потому что тогда целесообразнее будет использовать strip_tags(). А этот вариант я писал вообще для удаления одного тега (чтоб не перечислять множество оставляемых в strip_tags(), а просто написать один удаляемый).
Просто если я добавлю пробел к запятой, нужен будет trim
Не, trim() не нужна, я этот момент учёл на стороне regex'а ))

Ты можешь в песочнице пооперировать строкой с тегами: 'а , b r, p' - всё отработает корректно даже при таком корявом написании тегов, гг

Добавлено: 30.10.2017 / 13:33
О_о ... не работает она чё-то так, как задумано - вложенные теги не корректно удаляет. Вечером поковыряю её ещё.

Добавлено: 30.10.2017 / 13:40
Видать какой-то глюк в песочнице - перекрутил массу вариантов, всё корректно работает. Проверь, Димон, на локалке:
code (+/-)
$text = '<p>Текст1 <a href="qwer">Текст2</a></p><br />Текст3<hr>';

echo del_tags($text, 'a, b r, p , hr');


function del_tags($txt, $tag) {
    $tags = explode(',', $tag);
    
    do {
        $tag = array_shift($tags);
        $txt = preg_replace("~<($tag)[^>]*>|(?:</(?1)>)|<$tag\s?/?>~x", '', $txt);
    } while (!empty($tags));
    
    return $txt;
}

// Текст1 Текст2Текст3


Добавлено: 30.10.2017 / 20:42
Koenig, потестил скрипт - действительно, были погрешности. Во первых, надо было переменные экранировать, а во вторых - тут рекурсивная подмаска срабатывала не для всех альтернатив. В общем, подправил и тут, и в песочнице, теперь должно быть всё ок.
_______
UPD: нашёл ещё ошибки позже исправлю шаблон.
.
(\/)____o_O____(\/)

ДоХтор, Рекурсия с вложенными коряво работает, это старый прикол. Ну и надо наверное ещё i добавить

.
ДоХтор

Просмотр MAC-кода вашего устройства прямо в браузере:
(тестировал на Linux)

echo '<pre>', passthru('cat /proc/net/arp'), '</pre>';
/*
IP address       HW type     Flags       HW address            Mask     Device
192.168.1.1      0x1         0x2         64:d1:54:8b:4b:5e     *        enp0s25
*/
Всего: 361