php dizi xsl

2 Cevap php

Ben hiyerarşik verileri içeren bir xml dosyası var. Şimdi ben bir php dizi içine bazı verileri almak gerekiyor. Ben php dizi olarak biçimlendirilmiş istediğiniz verileri almak için xsl kullanın. Ben tüm sekmeleri ve düz bir dizeye dönüştürmek için kurtulmak için gereken ekstra boşluk vb satır sonlarını bırakır bastırabilirsiniz Ama (ben! Varsayalım) ve daha sonra bir diziye bu dizeyi dönüştürmek.

Metin olarak xsl Ben çıktı ve (hiçbir şey yok ki) girinti = "hayır" var. Ben \ t \ n \ r vb şerit denedim ama tüm çıktıyı etkilemez.

Tek boşluklar hariç tüm biçimlendirme dışında şerit olabilir orada gerçekten iyi bir php fonksiyonu var mı? Ya da daha bilmem ya da aynı şeyi yapmanın başka bir yolu yok orada burada oluyor?

2 Cevap

Öncelikle, PHP dizi oluşturmak için xsl çıkışını kullanarak oldukça çirkin ve verimsiz. Ben çok PHP mevcut DOMDocument sınıfı gibi bir şey ile gidiyveyaöneririm (http://www.php.net/manual/en/class.domdocument.php). Eğer mevcut yöntemi ile sopa gerekir, gereksiz boşluk kaldırmak için normal ifadeler kullanmayı deneyin.

$string = preg_replace('/\s+/', '', $string);

veya

$string = preg_replace('/\s\s+/', ' ', $string);

tek bir beyaz boşluk korumak.

I a class for opensource library hoş geldiniz kullanmak, ve bir XML dizi (ve sadece "iyi" parçalar almaya) oluşturmak için nasıl bir örnek olarak bakmak olduğunu oluşturduk.

USING XML

Yani sorunun dönüm noktası muhtemelen mümkün olduğunca uzun XML verilerini tutuyor. Bu nedenle after XSL çeviri gibi bir şey olurdu:

<xml>
    <data>value 
          with newline
    </data>
    <data>with      lots    of    whitespace</data>
</xml>

Sonra olabilir döngü yalak veri gibi:

$xml = simplexml_load_string($xml_string);
foreach($xml as $data)
{
    // use str_replace or a regular expression to replace the values...
    $data_array[] = str_replace(array("  ", "\n"), "", $data);
}

// $data_array is the array you want!

USING JSON

Ancak daha sonra XML içine çıkış XSL'yi o döngü olamaz eğer. Sonra bir JSON dize nesne oluşturmak ve xsl gibi bakmak diye bir diziye dönüştürmek olduğunu XSL'yi kullanmak isteyebilirsiniz:

{
    "0" : "value 
           with newline",
    "1" : "with      lots    of    whitespace"
}

Sonra olabilir döngü yalak veri gibi:

$json_array = json_encode($json_string, TRUE); // the TRUE is to make an array
foreach($json_array as $key => $value)
{ 
    // use str_replace or a regular expression to replace the values...
    $json_array[$key] = str_replace(array("  ", "\n"), "", $value);
}

Boşluk ve yeni satır XSLT yol tutuşu oldukça gelişmemiş olduğundan her iki şekilde PHP değerleri çekmek gerekecek.