PHP için en kolay ayrıştırma biçimi nedir?

4 Cevap php

Benim PHP dosyasında, ben aşağıdaki gibi bir sorgu kullanarak bilgi toplu üzerinden okuyorum:

SELECT  GROUP_CONCAT(CONCAT('<comment><body><![CDATA[',body,']]></body>','<replier>',if(screen_name is not null and !anonymous,screen_name,''),'</replier>','<created>',created,'</created></comment>') SEPARATOR '')
    					FROM   idiscussion
    					LEFT JOIN
    					       users
    					ON     idiscussion.uid=users.id
    					WHERE  idiscussion.iask_id = 1

Evet, o, xml formatında gibi, ama PHP ayrıştırmak kolay değil gibi görünüyor

Daha sonra kolayca ayrıştırmak için kullanmak için hangi format üzerinde herhangi bir tavsiye?

AS benim ben, hepsini bir araya birleştirerek gerekiyor

Bu durumda düşünmek: Bir defada 1 konu ve bu başlık altında tartışmalar almak için. 1 konu bunu beraber birleştirerek olmadan 1 sorguda bunu birden fazla discussions.How karşılık?

4 Cevap

Bir SQL veritabanından veri alıyorsanız, bazı metin biçiminde içine benzetecek, ama bunun yerine normal bir sorgu gerçekleştirmek ve size verilen sonuçlar ile çalışmak için SQL işlevleri kullanmak için SQL kullanmak için değil çok daha kolaydır.

Diğer PHP müşterilerine verileri seri gerek sonuna kadar, ben tavsiye ederim PHP's standard serialization format.

) (Veri yapısına bağlıdır, ama değerler bir liste kolaylıkla katılmak kullanarak girdileri bir yarı-kolon ayrılmış listesi () olarak kaydedilebilir ve daha sonra kolayca bölünmüş kullanarak çözümlenen olabilir.

Bu son derece basit, ama biraz daha karmaşık veri için ideal olmayabilir.

Yorumlamak için Cevap: veri virgül içeriyorsa, uygun şekilde öncelenmesi gerekir.

Sen DOM kullanabilir veya SimpleXML XML dosyalarını ayrıştırmak için değil, aynı zamanda JSON veya YAML. Tüm PHP için üst düzey ayrıştırıcıların güvenebilirsiniz olarak kullanmak oldukça kolay. Onlar biçimini nasıl kullanmak istediğinize bağlı olarak avantaj ve dezavantajları var.

Sadece without hep birlikte birleştirerek veri almak değil, neden ben sorabilir miyim?

SELECT body,
       IF(screen_name IS NOT NULL AND !anonymous, screen_name, '') AS replier,
       created
FROM   idiscussion
LEFT JOIN
       users
ON     idiscussion.uid = users.id
WHERE  idiscussion.iask_id = 1

Bu kadar çabuk orijinal sorgu olarak yürütmek gerektiğini ve herhangi bir başka sonuç kuracak gibi verileri erişebilirsiniz. MySQL kullanıyorsanız ve PDO kullanarak değil varsayarak:

$result = mysql_query($sql);
if ($result) {
    while ($row = mysql_fetch_assoc($result)) {
        // $row is an associative array containing the current row's data.
    }
}

Eğer XML oluşturmak gerekir ama aynı zamanda sadece PHP oluşturmak, ham halini verilere erişmek istiyorsanız.

$xml =
    '<comment>' .
         '<body><![CDATA[' . $row['body'] . ']]></body>' .
         '<replier>' . $row['replier'] . '</replier>' .
         '<created>' . $row['created'] . '</created>' .
    '</comment>';

Sen zaten dezenfekte edilmemiş ise verileri kaçmak gerekebilir. Bu sorunun kapsamı dışında olsa da, bu tür XMLWriter gibi bir XML oluşturucu kullanabilirsiniz.