PHP имеет эквивалент этому типу строковой замены Python?

Когда вы говорите $(document).ready(f), вы можете сказать, что движок сценария выполняет следующие действия:

  1. получить документ объекта и нажать его, поскольку он не находится в локальной области, он должен сделать хеш-таблицу поиск, чтобы найти документ, к счастью, документ глобально связан, поэтому он является единственным поиском.
  2. найти объект $ и выбрать его, поскольку он не находится в локальной области, он должен выполнить поиск хеш-таблицы , который может иметь или не иметь коллизий.
  3. найти объект f в глобальной области видимости, который является другим методом поиска хеш-таблицы, или нажать объект функции и инициализировать его.
  4. call ready выбранного объекта, который включает в себя другой поиск хеш-таблицы в выбранном объекте, чтобы найти метод и вызвать его.
  5. сделано.

В лучшем случае это 2 хеш-таблицы, но это игнорирует тяжелую работу, выполняемую jQuery, где $ - кухонная раковина всех возможных входов в jQuery, поэтому другая карта, скорее всего, отправит запрос на исправление обработчика.

В качестве альтернативы вы можете сделать это: [/ g1 6]

window.onload = function() {...}

, который

  1. найдет окно объекта в глобальной области, если JavaScript оптимизирован, он будет знать, что, поскольку окно не изменено, оно уже выбрано объект, поэтому ничего не нужно делать.
  2. объект функции помещается в стек операнда.
  3. проверить, является ли onload свойство или нет, выполнив поиск в хеш-таблице, поскольку он называется как функция.

В лучшем случае это стоит один поиск таблицы хеш-таблицы, что необходимо, потому что onload должен быть выбран.

В идеале, jQuery будет компилировать свои запросы к строкам, которые можно вставить для выполнения того, что вы хотите, чтобы jQuery выполнял, но без диспетчеризации jQuery во время выполнения. Таким образом, у вас есть опция либо

  1. , и динамическая отправка jquery, как сегодня.
  2. имеют jQuery компилируют ваш запрос к чистой строке JavaScript, которая может быть передана eval для выполнения того, что вы хотите.
  3. скопировать результат 2 непосредственно в ваш код и пропустить стоимость eval.
12
задан tshepang 29 October 2012 в 21:02
поделиться

3 ответа

function subst($str, $dict){
    return preg_replace(array_map(create_function('$a', 'return "/%\\($a\\)s/";'), array_keys($dict)), array_values($dict), $str);
 }

Вы называете его как так:

echo subst('The %(site)s site %(adj)s because it %(adj)s', array('site'=>'Stackoverflow', 'adj'=>'rocks'));
5
ответ дан 2 December 2019 в 22:24
поделиться

@Marius

Я не знаю, быстрее ли это, но можно сделать это без regexes:

function subst($str, $dict)
{
  foreach ($dict AS $key, $value)
  {
    $str = str_replace($key, $value, $str);
  }

  return $str;
}
4
ответ дан 2 December 2019 в 22:24
поделиться

Некоторые внесенные пользователями примечания и функции в документации PHP для sprintf приближаются вполне.

Примечание: ищите страницу "sprintf2".

1
ответ дан 2 December 2019 в 22:24
поделиться
Другие вопросы по тегам:

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