REGEX (. *) Ve satır

2 Cevap php

Bunu nasıl düzeltebilirim?

REGEX:
//REGEX
$match_expression = '/Rt..tt<\/td> <td>(.*)<\/td>/';
preg_match($match_expression,$text,$matches1);
$final =  $matches1[1];       


//THIS IS WORKING
<tr> <td class="rowhead vtop">Rtštt</td> <td><img border=0 src="http://somephoto"><br /> <br />INFO INFO INFO</td>
</tr> 


//THIS IS NOT WORKING
<tr> <td class="rowhead vtop">Rtštt</td> <td> <br />
IFNO<br />
INFO<br /></td></tr>

2 Cevap

Eğer bir HTML belgesi veri ayıklamak için Düzenli İfadeler kullanılarak olmamalıdır tam olarak neden Ve bu.

Biçimlendirme yapısı yok (diğer kullanıcılar tarafından verilen çözümler işe yarayabilir ... kırılıncaya kadar) var çünkü ben sana kullanmak için uygun bir normal ifade vermez tam olarak neden olduğu, sadece çok güvenilmez o kadar keyfi değildir. DOMDocument veya phpQuery belgenizin veri ayıklamak gibi bir DOM Parser kullanın.

Burada kullanan bir örnek phpQuery,

$pq = phpQuery::newDocumentFile('somefile.html');
$rows = $pq->find('td.rowhead.vtop:parent');

$matches = array();

foreach($rows as $row) {
  $matches[] = $row->eq(1)->html();
}

You're doing it wrong!

Sorunuza bir çözüm olduğunu, söyledikten sonra:

/Rt..tt<\/td> <td>(.*)<\/td>/

olmalıdır

/Rt..tt<\/td> <td>(.*)<\/td>/s

bkz http://php.net/manual/en/reference.pcre.pattern.modifiers.php