SGML'nin Ayrıştırma ve PHP dizide saklayarak

2 Cevap php

Eğer bu konuda yardımcı olabilir Eğer bir dahisin.

Temelde, bu gibi bazı metin olacak:

<parent wealthy>
   <parent>
      <children female>
        <child>
          jessica
          <hobbies>
            basketball, soccer, video games
          </hobbies>
        </child>
        <child>
          jane
          <hobbies>
            cooking, shopping, boys
          </hobbies>
        </child>         
      </children female>
      <children male>
       <child>
         josh
         <hobbies>
           tennis, swimming
         </hobbies>
       </child>
      </children male>
    </parent>
   </parent wealthy>
   <parent poor>
     <parent>
       <children male>
         <child>
          ---
          <hobbies>...</hobbies>
         </child>
       </children male>
     </parent>
   </parent poor>

Bütün Yani, ben böyle bir ebeveyn-çocuk hiyerarşi var olacaktır:

- parent wealthy/ parent poor /parent something else
  -- parent
     -- children male/ children female / children something else
        -- child
         -- (name of the child is given without any tags around it)
         -- hobbies

Ben göründükleri sırasını korurken ben muhtemelen tüm bu bilgi dışarı ayrıştırmak ve onları bir php dizi / nesne / değişken depolanan nasıl merak ediyorum? Örneğin, <parent wealthy> Yukarıdaki belirirse <parent poor> Ben aynı sırayla onları tutmak istiyorum, ve <children male> {[(3 önce görülürse aynı şey gider )]}.

Bu neredeyse mükemmel geçerli XML olacak ve ben bunu ayrıştırmak SimpleXML kullanabilirsiniz, ancak sorun çocuğun adı istemci kullanım kolaylığı için bu şekilde tutmak istediği etiketleri arasında görünmez olmasıdır. örneğin:

    <child>
      jane
      <hobbies>
        cooking, shopping, boys
      </hobbies>
    </child>      

İşte 'Jane' herhangi bir etiket dışında görünür, ve <hobbies> bazı etiketler arasındaki görünür.

Bu nasıl çözümlenebilir? Bazı tavsiyeler verin. Eğer İfadelerinin kullanmanızı öneririz Eğer ben İfadelerinin bilmiyorum, kabul edilmesi için cevap için kullanılabilecek İfadelerinin verin.

Teşekkürler.

Edit: Asıl sorun, istemci etiketleri metin normal metin karıştırmak istiyor. Örneğin:

text text test <hobbies>...<hobbies>. text text text <age>30</age>

Bu nasıl çözümlenebilir?

2 Cevap

Böyle biçimlendirme kullanırken:

<child>
  jane
   <hobbies>
    cooking, shopping, boys
   </hobbies>
 </child>     

SimpleXML ile ayrıştırılır zaman jane child elemanının nodeValue nitelik olacaktır.

Sadece çünkü şu etiketi (ler) beyaz boşluk içeren olasıdır olarak, trim() değerine hatırlıyorum.

İnsanların bakış teknik açıdan soruyu cevaplamak için çalışıyoruz hissediyorum, ama burada sorun süreçtir.

Neden oh neden? Müvekkilin böyle verileri girmeye ısrar ediyor? Bu tamamen saçma. Hatta bunu doğrulayarak bir kabus olacaktır. Düzgün ayrıştırma dursun.

Söyle ona / onu, onlar için iyi bir kullanıcı arayüzü rulo kendi depolama mekanizması seçin ve kullanıcıların bunu böyle girerek olacak tüm sorun / sorunlar ve yanlış biçimlendirme hafifletmek olacaktır. Öyle madness.

Unutulmaması gereken tamamen farklı başka bir şey çocukların ebeveynlerden birinden geliyor gibi görünüyor olmasıdır. I homo sapiens tozuyla tohumlanan oldu farkında değildi.