Dize ayrıştırma yardım

2 Cevap php

Ben aşağıdaki biçimde metnin bir paragraf var:

  text text text <age>23</age>. text text <hobbies>...</hobbies>

Ben mümkün olmak istiyorum

1) Her bir <age> ve dize bulunan <hobbies> etiketi arasında bulunan metin ayıklayın. Yani, örneğin, ben olacak tüm <age></age> etiketleri arasında bulunan her yaş içerecektir $ages hangi adında bir dizi, ve sonra başka bir dizi $hobbies olurdu dize genelinde bulunan <hobbies></hobbies> etiketleri arasında metin.

Yukarıdaki metin olacak örneğin çok 2 gibi), {age_444} gibi bir belirteç ile ekstre edilmiş etiketler, yerine edebilecektir

  text text text {age_444}. text text {hobbies_555}

Bu nasıl yapılabilir?

2 Cevap

Kaynak belge, iyi biçimlendirilmiş XML (veya kolayca en azından bu şekle getirilebilir eğer), belgenizi dönüştürmek için XSLT / XSL-FO kullanabileceğiniz bir tür olup olmadığını.

<> Etiketleri içine bilgi bulma ve onları ayıklamak / yeniden düzenlenmesi temel özelliklerinden biridir. Sen (Java, C, hatta Visual Basic) veya çeşitli dillerdeki stand-alone XSLT / XSL-FO kullanabilirsiniz

Ne gerek kaynak belge ve dönüşüm kuralları anlatan bir belgedir. Render makine veya kütüphane fonksiyonu dinlenme yapacak.

Umut olur. İyi şanslar

$string = '<age>23</age><hobbies>hobbietext</hobbies>';

$ageTemp = explode('<age>', $string );
foreach($ageTemp as $key=>$value)
{
    $age = explode('</age>', $value);
    if(isset($age[0])) $ages[] = $age[0];
}

$hobbiesTemp = explode('<hobbies>', $string );
foreach($hobbiesTemp as $key=>$value)
{
    $hobbie = explode('</hobbies>', $value);
    if(isset($hobbie[0])) $hobbies[] = $hobbie[0];
}

son diziler $ hobiler ve $ yaşları vardır

bundan sonra sadece bu gibi acı değiştirin:

foreach($ages as $key=>$value)
{
     $string = str_replace('<age>'.$value.'</age>', '{age_'.$yourId.'}', $string);
}

foreach($hobbies as $key=>$value)
{
     $string = str_replace('<hobbies>'.$value.'</hobbies>', '{hobbie_'.$yourId.'}', $string);
}