На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ALXR
  
    > Поиск якоря в docx (xml) файле. , Необходимо найти якорь вида ${var} в xml-документе.
      Здравствуйте,
      Моя проблема заключается в следующем:
      Есть документ docx вида:
      "Единственный участник ${CompType} «${CompName}» (далее – «Общество») – ${SUMMemberComp} в лице Генерального директора ${CompHeadRP}, действующ${CompHeadSexEnding} на основании Устава" и т.д.
      С помощью php необходимо заполнить якоря данными, делается это в файле xml вида:
      ExpandedWrap disabled
        - <w:r w:rsidRPr="000B7B94">
        - <w:rPr>
          <w:bCs />
          <w:color w:val="000000" />
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          </w:rPr>
          <w:t>Единственный</w:t>
          </w:r>
        - <w:r w:rsidR="00EB0893" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:bCs />
          <w:color w:val="000000" />
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t xml:space="preserve"></w:t>
          </w:r>
        - <w:r w:rsidRPr="000B7B94">
        - <w:rPr>
          <w:bCs />
          <w:color w:val="000000" />
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          </w:rPr>
          <w:t>участник</w:t>
          </w:r>
        - <w:r w:rsidR="00EB0893" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:bCs />
          <w:color w:val="000000" />
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t xml:space="preserve"></w:t>
          </w:r>
        - <w:r w:rsidR="00E01704" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:bCs />
          <w:color w:val="000000" />
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t>${</w:t>
          </w:r>
        - <w:r w:rsidRPr="00BA700A">
        - <w:rPr>
          <w:bCs />
          <w:color w:val="000000" />
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t>CompType</w:t>
          </w:r>
        - <w:r w:rsidR="00E01704" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:bCs />
          <w:color w:val="000000" />
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t>}</w:t>
          </w:r>
        - <w:r w:rsidRPr="00E01704">
        - <w:rPr>
          <w:bCs />
          <w:color w:val="000000" />
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t xml:space="preserve">«</w:t>
          </w:r>
        - <w:r w:rsidR="00E01704" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:bCs />
          <w:color w:val="000000" />
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t>${</w:t>
          </w:r>
        - <w:r w:rsidRPr="00BA700A">
        - <w:rPr>
          <w:bCs />
          <w:color w:val="000000" />
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t>CompName</w:t>
          </w:r>
        - <w:r w:rsidR="00E01704" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:bCs />
          <w:color w:val="000000" />
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t>}</w:t>
          </w:r>
        - <w:r w:rsidRPr="00E01704">
        - <w:rPr>
          <w:bCs />
          <w:color w:val="000000" />
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t>» (</w:t>
          </w:r>
        - <w:r w:rsidRPr="000B7B94">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          </w:rPr>
          <w:t>далее</w:t>
          </w:r>
        - <w:r w:rsidRPr="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t xml:space="preserve">– «</w:t>
          </w:r>
        - <w:r w:rsidRPr="000B7B94">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          </w:rPr>
          <w:t>Общество</w:t>
          </w:r>
        - <w:r w:rsidRPr="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t xml:space="preserve">») –</w:t>
          </w:r>
        - <w:r w:rsidR="00E01704" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t>${</w:t>
          </w:r>
        - <w:r w:rsidR="00B02D8A" w:rsidRPr="00B02D8A">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t>SUMMemberComp</w:t>
          </w:r>
        - <w:r w:rsidR="00E01704" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t>}</w:t>
          </w:r>
        - <w:r w:rsidR="00EB0893" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t xml:space="preserve"></w:t>
          </w:r>
        - <w:r w:rsidRPr="004F6502">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          </w:rPr>
          <w:t>в</w:t>
          </w:r>
        - <w:r w:rsidR="00EB0893" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t xml:space="preserve"></w:t>
          </w:r>
        - <w:r w:rsidRPr="004F6502">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          </w:rPr>
          <w:t>лице</w:t>
          </w:r>
        - <w:r w:rsidR="00EB0893" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t xml:space="preserve"></w:t>
          </w:r>
        - <w:r w:rsidRPr="004F6502">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          </w:rPr>
          <w:t>Генерального</w:t>
          </w:r>
        - <w:r w:rsidR="00EB0893" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t xml:space="preserve"></w:t>
          </w:r>
        - <w:r w:rsidRPr="004F6502">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          </w:rPr>
          <w:t>директора</w:t>
          </w:r>
        - <w:r w:rsidR="00EB0893" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t xml:space="preserve"></w:t>
          </w:r>
        - <w:r w:rsidR="00E01704" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t>${</w:t>
          </w:r>
        - <w:r w:rsidR="000B7B94">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t>CompHeadRP</w:t>
          </w:r>
        - <w:r w:rsidR="00E01704" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t>}</w:t>
          </w:r>
        - <w:r w:rsidRPr="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t xml:space="preserve">,</w:t>
          </w:r>
        - <w:r w:rsidRPr="004F6502">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          </w:rPr>
          <w:t>действующ</w:t>
          </w:r>
        - <w:r w:rsidR="00E01704" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t>${</w:t>
          </w:r>
        - <w:r w:rsidR="001E5BF1">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t>CompHeadSexEnding</w:t>
          </w:r>
        - <w:r w:rsidR="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t>}</w:t>
          </w:r>
        - <w:r w:rsidR="00EB0893" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t xml:space="preserve"></w:t>
          </w:r>
        - <w:r w:rsidRPr="004F6502">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          </w:rPr>
          <w:t>на</w:t>
          </w:r>
        - <w:r w:rsidR="00EB0893" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t xml:space="preserve"></w:t>
          </w:r>
        - <w:r w:rsidRPr="004F6502">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          </w:rPr>
          <w:t>основании</w:t>
          </w:r>
        - <w:r w:rsidR="005605B2" w:rsidRPr="00E01704">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          <w:lang w:val="en-US" />
          </w:rPr>
          <w:t xml:space="preserve"></w:t>
          </w:r>
        - <w:r w:rsidRPr="004F6502">
        - <w:rPr>
          <w:sz w:val="24" />
          <w:szCs w:val="24" />
          </w:rPr>
          <w:t>Устава</w:t>
          </w:r>
          </w:p>

      Поскольку MsWord шибко умный, он при сохранении вставляет кучу "лишних" тегов и может разбить переменную ${Var} на, скажем, ${<...>Va<...>r<...>} что-то вроде.
      Как в этом документе можно найти якоря? Пробовал без использования RegExp, ничего толкового не получилось, работает только если якорь будет "Var" вместо "${Var}", но тут тоже проблема когда присутствуют 2 переменные Var и VarTwo.
      С помощью RegExp пытаюсь написать что-то вроде \$.*\{.*var.*\}, но тогда находится первое вхождение ${ и последнее }, т.е. ВЕСЬ документ заменяется на значение одной переменной.
      Если кто знает, пожалуйста подскажите как реализовать поиск с заменой.
        Цитата almevik @
        С помощью RegExp пытаюсь написать что-то вроде \$.*\{.*var.*\}, но тогда находится первое вхождение ${ и последнее }, т.е. ВЕСЬ документ заменяется на значение одной переменной.
        С жадностью пробовал играться?
          Цитата fatalist @
          С жадностью пробовал играться?

          Это, как я понял /U после рег.выражения? Честно говоря, не силен в синтаксисе этих выражений, но ничего не получилось в конструкторе http://gskinner.com/RegExr/?3143f.
          Я думаю надо менять условие, чтобы по маске находилась первая попавшаяся "}", но как это сделать для меня вопрос.

          Добавлено
          Не та ссылка, вот http://regexr.com?32cqp
            Почитай про жадность... она меняется не только модификатором
              да тут и без жадности можно решить. просто перестать использовать точку. заменить ее на [^\}] или [^\{] (взаимозависимости от позиции или на [^\{\}] что бы вообще не парится)
                ViktorXP Спасибо огромное! Все получилось, вот итоговое выражение \$[^\}]*search[^\}]*\} . search соответственно искомое слово внутри скобок.

                Добавлено
                Вопрос решен, тема закрыта, Спасибо!
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0318 ]   [ 15 queries used ]   [ Generated: 27.04.24, 22:35 GMT ]