PHP: preg_match_all('/<td id="cat_type">Тип столов:<\/td><td>(.*)<\/td>/Usi', $contents, $data[], PREG_SET_ORDER); Долг осам кактоы пытался найти, так и ненашел. Кто знает решение проблемы? Возможно здесь играет роль мое незнание регулярок.
HTML: string(66) "\<td id\="cat_type"\>Тип столов\:\</td\>\<td\>(.*)\</td\>" Array ( [0] => Array ( [0] => <td id="cat_type">Тип столов:</td><td>asfdasdf</td> [1] => asfdasdf ) ) PHP: <? $contents = '<td id="cat_type">Тип столов:</td><td>asfdasdf</td>'; $pattern = preg_quote('<td id="cat_type">Тип столов:</td><td>') . '(.*)' . preg_quote('</td>'); var_dump($pattern); preg_match_all('|'.$pattern.'|Usi', $contents, $data, PREG_SET_ORDER); print_r($data); ?> PHP: <?php $contents = '<td id="cat_type">Тип столов:</td><td>asfdasdf</td>'; mb_detect_encoding($contents); // UTF-8... только я почему-то не очень доверяю этой функции )
Проблема сменила оборот. На моем сайте все работает, но если беру с другого, в пхп скрипт контент получаю в виде UTF-8. И есл ивывести контент через echo $contents текст красиво отображаеться. Сам файл скрипта в utf8. А внедренный в скрипт контент: $c = "АБВГД"; echo $c; отображается каракулями. Чтобы работал скрипт, надо сделать чтобы поулченынй контент отображался также как и присвоеный в скрипте. Как этого добиться?
Эх, кто-то плохо читал мануал. Модификатор для регулярок PCRE на UTF-8 не большая U а маленькая u А U значит совсем другое
Sergey89 Эм... U это ungreedy maching, а u - это UTF-8. У него проблема с кодировками а не с greedy/ungreedy. Про U он и сам знает, т.к. поставил её в исходном примере. Пусть добавит u и будет всё нормально, ну и кодировку HTML страницы выставит нормально.