Още една задачка с preg_match

Illusion

Registered
Имам следния текст, от който искам само и единствено ПЪРВОТО съдържание между всеки един TD таг, започвайки от втория ред (тоест след <td>).

HTML:
<td>
\n(if you say no, other informations will be updated anyway)
</td>
<td>
\n(Falls Sie mit nein antworten, werden andere Informationen dennoch aktualisiert.)
</td>
<td>
<font size="-1">
 
</font>
</td>
</tr>
<tr bgcolor='#FFFFFF'>
<td>
\nAdditional information can be found in\n
</td>
<td>
\nWeitere Informationen in\n
</td>
<td>
<font size="-1">
 
</font>
</td>
</tr>
<tr bgcolor='#F2F2F2'>
<td>
 (N/A)
</td>
<td>
 (N/V)
</td>
<td>
<font size="-1">
 
</font>
</td>
</tr>
Тоест за по-ясно какъв трябва да е резултата:

Код:
1-ви ред: \n(if you say no, other informations will be updated anyway)
2-ри ред: \nAdditional information can be found in\n
3-ти ред: (N/A)
Игнорира се втория и третия TD таг след първия.
Как би станало с PHP, използвайки функцията preg_match?
 
Виждам, че си започнал да обясняваш по-дорбе какво искаш точно да стане, но аз пак да попитам преди да дам някакво решение:
1.Доколкото разбирам искаш от всяко <tr> съдържанието на първото му <td>.Та винаги ли в самия таг <tr> присъства задаване на цвят(bgcolor='blabla') или не?
2.Защо preg_match, трябва ти preg_match_all за всички първи стойности на <td> ?
 
somebody каза:
Виждам, че си започнал да обясняваш по-дорбе какво искаш точно да стане, но аз пак да попитам преди да дам някакво решение:
1.Доколкото разбирам искаш от всяко <tr> съдържанието на първото му <td>.Та винаги ли в самия таг <tr> присъства задаване на цвят(bgcolor='blabla') или не?
2.Защо preg_match, трябва ти preg_match_all за всички първи стойности на <td> ?
1. И на двете да.
2. Добре, няма проблем… Аз се опитах с preg_match, но не се получи и реших да пиша тук.
 
PHP:
$string = '
<tr bgcolor=\'#F2F2F2\'>
<td>
\n(if you say no, other informations will be updated anyway)
</td>
<td>
\n(Falls Sie mit nein antworten, werden andere Informationen dennoch aktualisiert.)
</td>
<td>
<font size="-1">
 
</font>
</td>
</tr>
<tr bgcolor=\'#FFFFFF\'>
<td>
\nAdditional information can be found in\n
</td>
<td>
\nWeitere Informationen in\n
</td>
<td>
<font size="-1">
 
</font>
</td>
</tr>
<tr bgcolor=\'#F2F2F2\'>
<td>
 (N/A)
</td>
<td>
 (N/V)
</td>
<td>
<font size="-1">
 
</font>
</td>
</tr>';

preg_match_all('~<tr bgcolor[^<]+>\s*<td>\s*([^<]+?)\s*(?=</td>)~',$string,$match);
echo '<pre>'.print_r($match[1],true).'</pre>';
 

Back
Горе