Помогите составить регулярное выражение

Статус
В этой теме нельзя размещать новые ответы.

dump1111

Участник
Регистрация
7 Июл 2009
Сообщения
266
Реакции
8
Подскажите как составить регулярное выражение, чтобы вытащить из кода последние три слова:
Код:
<h3>Past tense</h3>
<table border=1>
<tr>
<th align=left>Masculine</th>

<th align=left>Feminine</th>
<th align=left>Neutral</th>
<th align=left>Plural</th>
</tr>
<tr>
<td align=left>бе'гал</td>
<td align=left>бе'гала</td>
<td align=left>бе'гало</td>
<td align=left>бе'гали</td>
</tr>

</table>
Вот чтобы вытащить слова бе'гал,бе'гала, бе'гало.
 
$data - это твоя таблица
PHP:
preg_match_all("!<td align=left>(.+)</td>!",$data,$m,PREG_PATTERN_ORDER);
в массиве $m[1] будут находиться все найденные совпадения, последние 3 можешь вытянуть оттуда через array_pop
 
или через цикл FOR
PHP:
$num_array=count($m[1]);//узнаем количество элементов массива
for ($i==$num_array-3;$i<=$num_array;$i++)
{print $m[1][$i];}
вроде так))
или еще через сотню способов. чем твой вариант оптимальнее в рамках данной задачи, когда известно количество элементов?
 
Кстати, я попробовал через функцию array_shift, так она выводит сообщение об ошибке, что $noun shold be an array:
PHP:
preg_match_all("!<td align=left>(.+)</td>!",$content,$noun,PREG_PATTERN_ORDER);
for ($i=0;$i<=4;$i++)
{
$dative=array_shift($noun[1][$i]);
}
 
функция array_shift извлекает первый элемент из массива, так зачем ты в цикле номер элемента указываешь? по-твоему в массиве может быть $i-первых элементов?
 
функция array_shift извлекает первый элемент из массива, так зачем ты в цикле номер элемента указываешь? по-твоему в массиве может быть $i-первых элементов?
массив двухмерный. вот цитата из доки пхп:
PREG_PATTERN_ORDER
Orders results so that $matches[0] is an array of full pattern matches, $matches[1] is an array of strings matched by the first parenthesized subpattern, and so on.
во втором элементе массива (1 - это второй элемент в С-нотации) будет массив полученных результатов (т.е. именно то что нужно ТС-у), а в первом - полные строки всего выражения.
 
массив двухмерный. вот цитата из доки пхп:

во втором элементе массива (1 - это второй элемент в С-нотации) будет массив полученных результатов (т.е. именно то что нужно ТС-у), а в первом - полные строки всего выражения.
ты самый умный тут чтоли?

$noun[1] - массив
$noun[1][$i] - не массив
 
Это значение массива. Для array_shift тебе нужно использовать $noun[1]
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху