PHP gebelik Soru

3 Cevap php

Benim kadar sert denemek gibi, gebelik ve ben birlikte alamadım, bu yüzden, ben PHP uzmanları yardımcı olabilir size birini umuyorum ..

Ben bir PHP komut dosyası için gelen bazı HTML kaynak kodu var, ve ben kaynak koddan kaldırıldı dışarı çıkardı belirli öğeleri / gerekir.

Bu HTML parçası olarak gelirse First, (birden çok örneği olabilir):

<SPAN class=placeholder title="" jQuery1262031390171="46">[[[SOMETEXT]]]</SPAN>

Ben sadece [[[SOMETEXT]]] dönüştürülür istiyorum

Önek her zaman (bence) olacağını unutmayın:

<SPAN class=placeholder

.. Ve eki her zaman olacaktır

</SPAN>

(Evet, sermaye SPAN), ancak title="" ve jQuery###="#" parçaları farklı olabilir. [[[SOMETEXT]]] şey olabilir. I essentially want the SPAN tag removed.

Bu HTML parçası olarak gelirse Next, (ayrıca birden çok örneği olabilir):

<span style="" class="placeholder" title="">[[[SOMETEXT]]</span>

.. Aynı şey - sadece [[[SOMETEXT]]] parçası olarak kalmasını istiyorum. I piece will always be prefix, and (Bu durumda, küçük span etiketleri) eki olacağını düşünüyorum.

Bu muhtemelen 2 Preg komutları alabilir anlıyorum, ama bir fonksiyon içine html metin geçmek ve temizlenmiş / elimden sürümü, bu gibi bir şey elde edebilmek istiyorum:

$dirty_text = $_POST['html_text'];
$clean_text = strip_placeholder_spans($dirty_text);
function strip_placeholder_spans( $in_text ) {
 // all the preg magic happens here, and returns result
}

ADDED/UPDATED FOR CLARITY

Tamam, bazı iyi geri bildirim almak ve yakın alıyorum. Ancak, daha anlaşılır kılmak için, burada bir örnektir. I () işlevi strip_placeholder_spans içine bu metni gönderdi istiyorum:

<blockquote>
<h2 align="center">Firefox: <span class="placeholder" title="">[[[ITEM1]]]</span></h2>
<h2 align="center">IE1:<SPAN class=placeholder title="" jQuery1262031390171="46">[[[ITEM2]]]</SPAN>
</h2>
<h2 align="center">IE2:<SPAN class=placeholder title="" jQuery1262031390412="52">[[[ITEM3]]]</SPAN> 
</h2>
<h2 align="center"><br><font face="Arial, Helvetica, sans-serif">COMPLETE</font></h2>
<p align="center">Your Text Can Go Here</p>
<p align="center"><a href="javascript:self.close()">Close this Window</a></p>
<p align="center"><br></p>
<p align="center"><a href="javascript:self.close()"><br></a></p></blockquote>
<p align="center"></p>

geri geldiğinde ve bu olmalıdır:

<blockquote>
<h2 align="center">Firefox: [[[ITEM1]]]</h2>
<h2 align="center">IE1:[[[ITEM2]]]</h2>
<h2 align="center">IE2:[[[ITEM3]]]</h2>
<h2 align="center"><br><font face="Arial, Helvetica, sans-serif">COMPLETE</font></h2>
<p align="center">Your Text Can Go Here</p>
<p align="center"><a href="javascript:self.close()">Close this Window</a></p>
<p align="center"><br></p>
<p align="center"><a href="javascript:self.close()"><br></a></p></blockquote>
<p align="center"></p>

3 Cevap

Bir HTML ayrıştırmak kullanın. Bu en sağlam bir çözümdür. Aşağıdaki kod deftere iki kod örnekleri için çalışacak:

$s= <<<STR
<span style="" class="placeholder" title="">[[[SOMETEXT]]</span>
Some Other text &amp; <b>Html</b>
<SPAN class=placeholder title="" jQuery1262031390171="46">[[[SOMETEXT]]]</SPAN>
STR;

preg_match_all('/\<span[^>]+?class="*placeholder"*[^>]+?>([^<]+)?<\/span>/isU', $s, $m);
var_dump($m);

Düzenli ifadeler kullanarak çok odaklı kod sonuçlanır. Bu örnek sadece çok özel HTML ve iyi biçimlendirilmiş HTML idare edecek. Örneğin, ayrıştırmak değil <span class="placeholder">some text < more text</span>. Eğer kaynak HTML üzerinde kontrol varsa bu yeterli olabilir.

Ben bu POBLE çözmek gerektiğini düşünüyorum

function strip_placeholder_spans( $in_text ) {
preg_match("/>(.*?)<\//", $in_text, $result);
return $result[1]; }

Adım bir: HTML ile uğraşırken araç kutusundan düzenli ifadeler çıkarın. Bir ayrıştırıcı gerekir.

Adım iki: İndir simple_html_dom php için.

Adım üç: Ayrıştırma

$html = str_get_html('<SPAN class=placeholder title="" jQuery1262031390171="46">[[[SOMETEXT]]]</SPAN>');
$spanText = $html->find('span', 1)->innerText;

Kar: Dört Adım!

Edit

$html->find('span.placeholder', 1)->tag, $matches); ne istediğiniz dönecektir. Bu class = yer tutucu arar.