Пользовательские теги с Doxygen

Первое отличие:

Интересный пример другого поведения между strtr и str_replace приведен в разделе комментариев руководства PHP:


  • Я бы ожидал в результате: «ZDDB»
  • Однако это возвращение: «ZDDD» (потому что B = D в соответствии с нашим массивом)

Чтобы сделать эту работу , вместо этого используйте «strtr»:

 "A","2" => "B","3" => "C","B" => "D");
$word = "ZBB2";
echo strtr($word,$arr);
?>
  • Это возвращает: «ZDDB»

Это означает, что str_replace является более глобальным подходом к заменам , а strtr просто переводит символы один за другим.


Другое отличие:

Учитывая следующий код (взятый из Сравнение скорости замены строк PHP ):

 "PHP: Hypertext Preprocessor"
        , "PHP: Hypertext Preprocessor" => "PHP"));
$text_str_replace = str_replace(array("PHP", "PHP: Hypertext Preprocessor")
    , array("PHP: Hypertext Preprocessor", "PHP")
    , $text);
var_dump($text_strtr);
var_dump($text_str_replace);
?>

Результирующие строки текста будут:

string (3) Строка «PHP» (27) «PHP: Hypertext Preprocessor»

blockquote>

Основное объяснение:

Это происходит потому, что:

  • strtr: сортирует свои параметры по длине, в порядке убывания , так: это даст «большее значение» самому большому, и тогда, поскольку текст темы сам по себе является самым большим ключом заменяющего массива, он переводится. потому что все символы текста темы были заменены, процесс заканчивается там.
  • str_replace: он работает в том порядке, в котором определены ключи, поэтому: он находит ключ «PHP» в тексте темы и заменяет его: «PHP: Hypertext Preprocessor», что дает результат: PHP: препроцессор гипертекста: препроцессор гипертекста ". то он находит следующий ключ: «PHP: Hypertext Preprocessor» в результирующем тексте предыдущего шага, поэтому его заменяет «PHP», что дает результат: «PHP: Hypertext Preprocessor». больше нет ключей для поиска, поэтому замена заканчивается там.

37
задан Chris 14 August 2012 в 09:39
поделиться

1 ответ

Обобщение \bug и \todo \xrefitem.

решение, которое я предлагаю:

  • в Doxyfile:

    ALIASES += "req=\xrefitem req \"Requirement\" \"Requirements\" "
    
  • в зарегистрированном коде:

    /// \req #42 - The system shall work in any situation
    
44
ответ дан mouviciel 14 August 2012 в 20:39
поделиться
Другие вопросы по тегам:

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