Каково общее согласие при поддержке Windows 2000? [закрытый]

В регулярном выражении вы можете «захватить» части согласованной строки с помощью (brackets); в этом случае вы захватываете (^|_) и ([a-z]) части матча. Они нумеруются начиная с 1, поэтому у вас есть обратные ссылки 1 и 2. Матч 0 - это вся строка с согласованием.

Модификатор /e принимает заменяющую строку и заменяет обратную косую черту с последующим номером ( например, \1) с соответствующей обратной ссылкой, но поскольку вы находитесь внутри строки, вам нужно избежать обратной косой черты, чтобы вы получили '\\1'. Затем он (эффективно) запускает eval, чтобы запустить результирующую строку, как если бы это был PHP-код (поэтому он устарел, потому что его легко использовать eval небезопасным способом).

Функция preg_replace_callback вместо этого выполняет функцию обратного вызова и передает ей массив, содержащий совпадающие обратные ссылки. Итак, где бы вы написали '\\1', вместо этого вы получите доступ к элементу 1 этого параметра - например. если у вас есть анонимная функция формы function($matches) { ... }, первая обратная ссылка - $matches[1] внутри этой функции.

Итак, аргумент /e в

'do_stuff(\\1) . "and" . do_stuff(\\2)'

может стать обратным вызовом

function($m) { return do_stuff($m[1]) . "and" . do_stuff($m[2]); }

. Или в вашем случае

'strtoupper("\\2")'

может стать

function($m) { return strtoupper($m[2]); }

Обратите внимание, что $m и $matches не являются волшебными именами, это просто имя параметра, которое я дал при объявлении моих функций обратного вызова. Кроме того, вам не нужно передавать анонимную функцию, это может быть имя функции в виде строки или что-то вроде формы array($object, $method), как с любым обратным вызовом в PHP , например

function stuffy_callback($things) {
    return do_stuff($things[1]) . "and" . do_stuff($things[2]);
}
$foo = preg_replace_callback('/([a-z]+) and ([a-z]+)/', 'stuffy_callback', 'fish and chips');

Как и в любой функции, вы не можете получить доступ к переменным вне вашего обратного вызова (из окружения) по умолчанию. При использовании анонимной функции вы можете использовать ключевое слово use для импорта переменных, которые вам нужны для доступа, , как описано в руководстве по PHP . например если старый аргумент был

'do_stuff(\\1, $foo)'

, тогда новый обратный вызов может выглядеть как

function($m) use ($foo) { return do_stuff($m[1], $foo); }

Gotchas

  • Использование preg_replace_callback - вместо модификатора /e в регулярном выражении, поэтому вам нужно удалить этот флаг из вашего аргумента «pattern». Таким образом, шаблон, подобный /blah(.*)blah/mei, станет /blah(.*)blah/mi.
  • Модификатор /e использовал внутри аргумента addslashes() вариант, поэтому некоторые замены использовали stripslashes() для его удаления; в большинстве случаев вы, вероятно, хотите удалить вызов stripslashes из вашего нового обратного вызова.

5
задан denis phillips 7 February 2010 в 00:24
поделиться

9 ответов

"Хорошо" субъективное решение. Необходимо будет смотреть на клиентуру и видеть то, что они используют.

Однако я отбросил поддержку Win2K более чем год назад без негативного воздействия.

8
ответ дан 18 December 2019 в 14:54
поделиться

Много компьютеров в моей компании использует Win2k, таким образом, мы не могли действительно отбросить поддержку. Все это зависит от клиентуры.

0
ответ дан 18 December 2019 в 14:54
поделиться

Это очень субъективно, это действительно зависит, кому Вы продаете.

Если это - среднестатистический американец затем, владельцы Windows 2K собираются быть в лучшем случае процентом или двумя из Вашего целевого рынка. Если это - вооруженные силы (кто я верю все еще выполненному 2K на их toughbooks), затем, Вы в беде.

0
ответ дан 18 December 2019 в 14:54
поделиться

Я сказал бы да, поскольку большинство переключилось на XP или перспективу, от того, что я могу сказать.

0
ответ дан 18 December 2019 в 14:54
поделиться

Так как XP 5/6 года теперь, я думаю, что большинство домашних пользователей будет использовать его, но многие бизнес-пользователи могут все еще использовать его. в целом, это зависит от Вашей целевой аудитории. Лично я расценил бы поддержку Windows 2000 в качестве награды, а не требование.

0
ответ дан 18 December 2019 в 14:54
поделиться

Это не просто "в порядке"; это - хорошая идея. Что-либо, чтобы поощрить отстающих держать в курсе является хорошей вещью.

1
ответ дан 18 December 2019 в 14:54
поделиться

Последняя версия WinRAR все еще поддерживает Windows 95. Думайте об этом, почему это? Это - потому что WinRAR решает чрезвычайно типичную проблему - распаковки файла. Люди все еще используют более старые системы, не потому что им нравятся они, но потому что они вынуждены к аппаратными средствами. Если Вы делаете видеоигру, уверенную, отбрасываете поддержку чего-нибудь ниже XP SP2, но если Вы делаете программу, которая решает определенную задачу, как преобразование RTF к PDF, я не вижу оснований для не поддержки других систем.

1
ответ дан 18 December 2019 в 14:54
поделиться

Его штраф мной :) Компания я работаю на (горную промышленность и строительство) с <15k сотрудники и мы не поддерживаем Wink2k и имеем не некоторое время.

0
ответ дан 18 December 2019 в 14:54
поделиться

Я сказал бы, что MS принял решение для Вас, если они сами привычка поддерживают его в.NET 3.5.

3
ответ дан 18 December 2019 в 14:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: