Ben PHP preg_replace kullanarak eksik HTML etiketleri kapatmak için basit bir fonksiyon yazmaya çalışıyorum.
Ben nispeten düz ileri olacağını düşündüm, ama nedense o olmamıştır.
Ne temelde yapmaya çalışıyorum aşağıdaki satırda yakın bir eksik etiketi:
<tr>
<th class="ProfileIndent0">
<p>Global pharmaceuticals</p>
<td>197.2</td>
<td>94</td>
</tr>
Attığım oldum yaklaşım açıldı inci ve düzgün kapalı inci etiketleri önünde değildir td etiketleri açılış bulmak için arkasında bir negatif görünüm kullanmaktır.
Örneğin:
$text = preg_replace('!<th(\s\S*){0,1}?>(.*)((?<!<\/th>)[\s]*<td>)!U','<th$1>$2</th>',$text);
Ben boşuna düzenli ifade deseni sayısız farklı şekillerde yazdım. Ancak yerine açık td etiketleri birkaç on maç gibi görünüyor - Sorun maddenin kutuyu inci / eksik olan sadece bir açık td üzerinde maç değildi ki olmuştur.
İşte tam giriş metin bulunuyor:
<CO_TEXT text_type_id="6">
<TEXT_DATA><![CDATA[<table class="ProfileChart"> <tr> <th class="TableHead" colspan="21">2008 Sales</th> </tr>
<tr> <th class="ProfileIndent0"></th> <th class="ProfileHead">$ mil.</th> <th class="ProfileHead">% of total</th> </tr>
<tr> <th class="ProfileIndent0"> <p>Global pharmaceuticals</p> <td>197.2</td> <td>94</td> </tr>
<tr> <th class="ProfileIndent0">Impax pharmaceuticals</th> <td>12.9</td> <td>6</td> </tr>
<tr> <th class="ProfileTotal">Total</th> <td class="ProfileDataTotal">210.1</td> <td class="ProfileDataTotal">100</td> </tr> </table><h3>Selected Generic Products</h3><ul class="prodoplist"><li>Anagrelide hydrochloride (generic Agrylin, thrombocytosis)</li><li>Bupropion hydr ochloride (generic Wellbutrin SR, depression)</li><li>Colestipol hydrochloride (generic Colestid, high cholesterol)</li><li>Dantrolene sodium (generic Dantrium, spasticity)</li><li>Metformin Hcl (generic Glucophage XR, diabetes)</li><li>Nadolol/Bendroflumethiazide (generic Corzide, hypertension)</li
><li>Oxybutynin chloride (generic Ditropan XL, urinary incontinence, with Teva)</li><li>Oxycodone hydrochloride (generic OxyContin controlled release, pain)</li><li>Pilocarpine hydrochlorine (generic Salagen, dry mouth caused by radiation therapy)</li></ul>]]></TEXT_DATA> </CO_TEXT>
Ben farkında değilim, ya da sadece sağ eşleşen desen vurmak değil ki PHP negatif görünüm behinds ile olacak bir şey var mı?
Herhangi bir yardım çok takdir.
Thanks, John