Ответов: 7 Просмотров: 335
|
Спасибо! Теперь ясно хоть в чем косяк состоял. Вообще данный код родился после мучений с функцией preg_replace. В общем виде задача заключается в следующем:
CODE ( htmlphp):
скопировать код в буфер обмена
<shape> <appearance> <material diffuseColor='0.3412 0.8824 0.7765'></material> </appearance> <indexedFaceSet coordIndex='6 2 1 -1 1 0 6 -1 8 10 9 -1 9 7 8 -1 11 5 4 -1 4 3 11 -1 13 15 14 -1 14 12 13 -1'> <coordinate DEF='Verticals-COORD' point='68 8 -528.8 68 8 -31.2 68 733 -31.2 1150 8 -528.8 1150 8 -31.2 1150 733 -31.2 68 733 -528.8 50 8 -528.8 50 8 -31.2 50 733 -528.8 50 733 -31.2 1150 733 -528.8 1132 8 -528.8 1132 8 -31.2 1132 733 -528.8 1132 733 -31.2'></coordinate> <textureCoordinate DEF='Verticals-TEXCOORD' point='749.3 -358 251.7 -358 251.7 367 749.3 -358 251.7 -358 251.7 367 749.3 367 -748.3 -358 -250.7 -358 -748.3 367 -250.7 367 749.3 367 -748.3 -358 -250.7 -358 -748.3 367 -250.7 367'></textureCoordinate> </indexedFaceSet> </shape> <shape> <appearance> <material diffuseColor='0.3412 0.8824 0.7765'></material> </appearance> <indexedFaceSet> <coordinate USE='Verticals-COORD'></coordinate> </indexedFaceSet> </shape>
в данном куске кода видно, что есть 2 блока shape'ов, но в одном есть координаты, а в другом их нет, суть в том, чтобы убрать из кода все блоки shape без координат, просто заменить их пустой строкой. Но поскольку как я уже писал здесь, я ранее практически не сталкивался с парсингом и регулярками, то написать это в одну строку у меня не вышло и я решил сначала разбить файл на shape'ы, а затем уже в каждом отдельно искать "пустые" и удалять их из массива. В данном случае искать по наличию сочетания USE= поскольку ссылки на координаты есть только в пустых блоках. Если сообщество предложит вариант решения данной задачи в одну строку буду очень признателен, ну и может просто кого-то заинтересует решение. |