Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.116.13.113] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте,
Моя проблема заключается в следующем: Есть документ docx вида: "Единственный участник ${CompType} «${CompName}» (далее – «Общество») – ${SUMMemberComp} в лице Генерального директора ${CompHeadRP}, действующ${CompHeadSexEnding} на основании Устава" и т.д. С помощью php необходимо заполнить якоря данными, делается это в файле xml вида: - <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.*\}, но тогда находится первое вхождение ${ и последнее }, т.е. ВЕСЬ документ заменяется на значение одной переменной. Если кто знает, пожалуйста подскажите как реализовать поиск с заменой. |
Сообщ.
#2
,
|
|
|
Цитата almevik @ С жадностью пробовал играться? С помощью RegExp пытаюсь написать что-то вроде \$.*\{.*var.*\}, но тогда находится первое вхождение ${ и последнее }, т.е. ВЕСЬ документ заменяется на значение одной переменной. |
Сообщ.
#3
,
|
|
|
Цитата fatalist @ С жадностью пробовал играться? Это, как я понял /U после рег.выражения? Честно говоря, не силен в синтаксисе этих выражений, но ничего не получилось в конструкторе http://gskinner.com/RegExr/?3143f. Я думаю надо менять условие, чтобы по маске находилась первая попавшаяся "}", но как это сделать для меня вопрос. Добавлено Не та ссылка, вот http://regexr.com?32cqp |
Сообщ.
#4
,
|
|
|
Почитай про жадность... она меняется не только модификатором
|
Сообщ.
#5
,
|
|
|
да тут и без жадности можно решить. просто перестать использовать точку. заменить ее на [^\}] или [^\{] (взаимозависимости от позиции или на [^\{\}] что бы вообще не парится)
|
Сообщ.
#6
,
|
|
|
ViktorXP Спасибо огромное! Все получилось, вот итоговое выражение \$[^\}]*search[^\}]*\} . search соответственно искомое слово внутри скобок.
Добавлено Вопрос решен, тема закрыта, Спасибо! |