Desen sonra Metin'i seçin

2 Cevap php

Ben belirli bir desen aşağıdaki arasındaki-tüm metni seçmek için çalışıyorum:

Örnek Metin:

"by thatonekid (Posted Mon Jan 12, 2009 7:17 pm)
fell onto the trail right below one of the most traveled walls at the point! yikes!

"

Ben üzerinde çalışmak her metin ile başlar: "KULLANICI ADI (Yayınlanan TARİH) <br /> theTextIWant tarafından"

Ben parantez yıllardan patlayan düşündüm, ama başka bir paren varsa tabii, o metni kırabilir.

İkincisi, metinlerin bazı "<br /><br />" ile biter. Ben metin sonradan yoksa sondaki <br /> 's kaldırmak gerekir.

Ev ödevimi yapmak için birisi için soruyorum gibi bu görünüyor eğer özür dilerim - Dürüst olmak gerekirse burada başlamak için hiçbir fikrim yok

2 Cevap

Sadece kullanıcı adı / tarihten sonra metin istiyorsanız, sadece biçimlendirme tutarlı olduğunu varsayarak, ilk
önce her şeyi kaldırabilirsiniz.

$text = preg_replace("/^.*?<br(\s\/)?>/si", "", $string);

Bu sadece metin ile size bırakarak, ve boş bir dize ile ilk
veya
, vaka-duyarsız, dahil etmeden önce her şeyi değiştirmek istiyorum. . *? başında mümkün olduğunca az çekeceği, yani olmayan bir açgözlü maç. Başka bir deyişle, ilk mola geçmiş kapmak değil.

Daha sonra bu takip edebilirsiniz:

$text = preg_replace("/^.*?<br(?:\s\/)?>(.*?)(<br(\s\/)?>)+$/si", "$1", $string);

Bu tüm bitiş boşluk kaldırmak ve
/
etiketleri gerekir.

Ayrıca tek bir preg_replace ile tüm bu yapabilirdi:

$text = preg_replace("/.*?<br(?:\s\/)?>(.*)(?:<br(?:\s\/)?>\s*)+$/si", "$1", $string);

Ben metin içeren, biri dışında () yakalar bütün (? :) Non-yakalar yaptı.

(Ben bu yüzden bir perl uyumlu düzenli ifade o ne diyor olduğunu varsayarak yaşıyorum, düzenli php kullanmayın).

Örneğin, sanırım preg_match ile, thoses regexpi deneyebilirsiniz. Online doktor bakın.

username : [_a-zA-Z09]+
date: [0-9]{1,2}/[0-9]{1,2}/[0-9]{2,4}

(Gtg üzgünüm, sana yardım daha sonra faili meçhul varsa)