Установка PHP в любой каталог, а не только в C:\php

Заметка от склероза, как обычно.

1. Качаем PHP и распаковываем архив в нужный каталог. Пусть для примера будет D:\Software\php
2. Копируем свой php.ini в этот каталог, или php.ini-development переименовываем в php.ini
3. Находим в секции [PHP] параметр extension_dir и меняем его значение на D:\Software\php\ext
4. Создаем в подкаталоге php каталог tmp, для временных файлов PHP
5. В секции [PHP] находим параметр sys_temp_dir и меняем значение на D:\Software\php\tmp

extension_dir = "D:\Software\php\ext"
sys_temp_dir = "D:\Software\php\tmp"

PHP для Windows слэши в путях (прямой или обратный) не важны, правильно переваривается и тот и тот:

extension_dir = "D:/Software/php/ext"
sys_temp_dir = "D:/Software/php/tmp"

6. Раскомментируем нужные расширения, например:

extension=bz2
extension=fileinfo
extension=gd2
extension=gettext

7. Если в проекте планируется использовать cURL, то добавляем в переменную окружения PATH каталоги с php.ini (D:\Software\php) экзешником curl.exe и библиотекой php_curl.dll

Источники

1. Установка Apache 2.4VC14 + PHP 7 на Windows 7 ­- 10
2. Настройка curl php на Windows

Афоризм

При плохой игре полюбому нужна хорошая мина… и миномет.
С плохими минами играть не стоит вовсе.

Автоматическое получение конфигов и пароля к VPN от vpnbook, теперь и для Windows.

По многочисленным просьбам зрителей, сделал римейк собственных недавних скриптов (копия копия), только теперь для Windows.
Написал небольшую программулину на C#, которая делает то же самое, что и вышеописанные скрипты.
— для распаковки ZIP-архивов использовал библиотеку DotNetZip, она же Ionic.Zip (копия)
— а для распознавания пароля на картинке, не мудрствуя лукаво, вызвал tesseract, естественно, версию под Windows.
Она в архиве с готовыми бинарниками самой программы, единственное, что может потребоваться, это поставить VCRedist для Visual C++ 2015

Скриншоты


Получение пароля

Остальные под катом

Скачать

Программу
— Библиотеки для работы tesseract:
Visual C++ Redistributable for Visual Studio 2015 (c сайта Microsoft)
vc_redist.x86.exe
vc_redist.x64.exe

Исходники

На GitHub

C#. Простой парсинг HTML Regerp’ом.

Преамбула

Да, предваряя камни, которые в меня полетят. Так делать нельзя, неправильно и вообще некузяво. Но что я буду делать, если нормальных парсеров под .NET Framework 2.0 уже net, а задача маленькая — найти все теги <a> или <img> и выдрать из них, соответственно, значение атрибутов href или src.

Решение

public List<string> ParseTags(string Tag, string Property)
{
    List<string> listBuf = new List<string>();

    Regex reHref = new Regex(@"(?inx)
                                <" + Tag + @" \s [^>]*" +
                                    Property + @"\s* = \s*"+
                                        @"(?<q> ['""] )"+
                                            @"(?<url> [^""]+ )"+
                                         @"\k<q>"+
                                 @"[^>]* >");

    foreach (Match match in reHref.Matches(HTMLPage))
    {
        listBuf.Add(match.Groups["url"].ToString());
    }

    return listBuf;
}

Это немного видоизмененное решение (добавил возможность подставлять в регулярное выражение тег и атрибут) из одной статьи на Хабре. Заметка, как обычно, от склероза.

Плюс добавлена функция выбора из найденного, уже без всяких регулярных выражений, с помощью string.Contains(<строка>).

public List<string> Select(string Pattern, List<string> inputList)
{
    List<string> selectList = new List<string>();

    foreach (string s in inputList)
    {
        if (s.Contains(Pattern))
        {
            selectList.Add(s);
        }
    }

    return selectList;
}