Используйте regex для нахождения определенной строки не в теге HTML

Вообще говоря, вы можете пометить метод как устаревший, чтобы предупредить пользователей о коде, который не будет работать в будущих версиях. Я думаю, что лучше всего использовать trigger_error вместе с некоторым phpdoc .

/**
 * @deprecated
 *
 * @return $this
 */
public function oldMethod()
{
    trigger_error('Method ' . __METHOD__ . ' is deprecated', E_USER_DEPRECATED);

    return $this;
}

phpdoc @deprecated важен, потому что многие IDE, такие как PHPStorm , распознают его и вводят имя метода, если вы пытаетесь его использовать, поэтому вы замечаете, что он устарел, прежде чем фактически запускать ваш код.

Это будет выглядеть примерно так:

jetbrains deprecated strikethrough

Помимо phpdoc, вы можете убедиться, что пользователь получит предупреждение, вызвав правильная ошибка во время выполнения. Просто убедитесь, что вы используете правильную константу (т. Е. E_USER_DEPRECATED).

E_DEPRECATED вместо этого используется внутри PHP, поэтому вы не должны его использовать. Больше информации здесь .

18
задан Binary Worrier 5 June 2009 в 09:55
поделиться

4 ответа

Это должно сработать:

(?<!<[^>]*)_mystring_

Он использует отрицательный поиск, чтобы проверить, что перед совпадающей строкой нет символа <без соответствующего>

22
ответ дан 21 October 2019 в 05:41
поделиться

Зачем использовать регулярное выражение?

Для xhtml загрузите его в XDocument / XmlDocument; для (не x) html пакет Html Agility Pack может показаться более разумным выбором ...

В любом случае, это будет анализировать HTML в DOM, чтобы вы могли перебирать узлы и проверять их.

0
ответ дан 21 October 2019 в 05:41
поделиться

Regular expression searches are typically not a good idea in XML. It's too easy to run into problems with search expressions matching to much or too little. It's also almost impossible to formulate a regex that can correctly identify and handle CDATA sections, processing instructions (PIs), and escape sequences that XML allows.

Unless you have complete control over the XML content you're getting and can guarantee it won't include such constructs (and won't change) I would advise to use an XML parser of some kind (XDocument or XmlDocument in .net, for instance).

Having said that, if you're still intent on using regex as your search mechanism, something like the following should work using the RegEx class in .NET. You may want to test it out with some of your own test cases at a site like Regexlib. You may also be able to search their regular expression catalog to find something that might fit your needs.

[>]. (_ mystring _). [<]

0
ответ дан 21 October 2019 в 05:41
поделиться

Игнорируя, что есть другие способы, и что я не настоящий эксперт по регулярным выражениям, но одна вещь, которая Мне пришло в голову следующее:

  • найти все mystring , которые ЕСТЬ в тегах, - потому что я не могу написать выражение, чтобы сделать обратное :)
  • замените их на что-нибудь другое
  • , затем замените все остальные mystring (которые остались не в тегах), так как вам нужно
  • восстановить исходные mystring , которые были в тегах

Итак, используя <[^>] *? (mystring) [^>] *> вы можете найти помеченные. Замените их на otherstring . Вы обычно заменяете оставшиеся mystring s. Заменить otherstring обратно на mystring

Грубый, но эффективный .... возможно.

0
ответ дан 21 October 2019 в 05:41
поделиться
Другие вопросы по тегам:

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