Регулярное выражение

12
S
На сайте с 07.01.2012
Offline
39
933

Привет, есть такой HTML код:

<a href="/level/10/m_act%5Bcountry%5D/8/" >Франция</a>, <a href="/level/10/m_act%5Bcountry%5D/11/" >Великобритания</a>, <a href="/level/10/m_act%5Bcountry%5D/14/" >Италия</a>, <a href="/level/10/m_act%5Bcountry%5D/50/" >Тунис</a>                    </div>

Мне нужна регулярка чтобы парсила страны, и на выходе получилось: Франция, Великобритания, Италия, Тунис

Заранее спасибо.

sabotage
На сайте с 14.02.2007
Offline
192
#1

$ptrn = '~<a([^>]+)>([^<]+)</a>~iu';

if(preg_match_all($ptrn, $str, $matches, PREG_SET_ORDER)){
foreach($matches as $out) $result[] = $out[2];
}
$res = implode(', ', $result);
echo $res;
L
На сайте с 07.12.2007
Offline
351
#2

В вашем случае достаточно PHP-функции strip_tags() - будут все страны через ', ' потом можно заюзать explode().

S
На сайте с 07.01.2012
Offline
39
#3
Ladycharm:
В вашем случае достаточно PHP-функции strip_tags() - будут все страны через ', ' потом можно заюзать explode().

Можете продемонстрировать? А то мне как-то не хочется из за этого делать цикл.

DV
На сайте с 01.05.2010
Offline
644
#4

$text = preg_replace('%<a href="(\s*\S*)"(.*?)>(.*?)</a>%', '$3,', $text);
VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
S
На сайте с 07.01.2012
Offline
39
#5
DenisVS:
$text = preg_replace('%<a href="(\s*\S*)"(.*?)>(.*?)</a>%', '$3,', $text);

Пробую вот так

preg_match('%<a href="(\s*\S*)"(.*?)>(.*?)</a>%', '$3,', $page, $country);

var_dump($country);

в итоге пусто

DV
На сайте с 01.05.2010
Offline
644
#6

Slient, что вы сделали? Загоняйте в переменнную $text вашу строку, прогоняйте через данный код, получайте на выходе $text.

S
На сайте с 07.01.2012
Offline
39
#7

$textex = preg_replace('%<a href="(\s*\S*)"(.*?)>(.*?)</a>%', $html_two, $textex);

var_dump($textex);

верно? $html_two - текст

DV
На сайте с 01.05.2010
Offline
644
#8

Slient, издеваетесь?

$text='<a href="/level/10/m_act%5Bcountry%5D/8/" >Франция</a>, <a href="/level/10/m_act%5Bcountry%5D/11/" >Великобритания</a>, <a href="/level/10/m_act%5Bcountry%5D/14/" >Италия</a>, <a href="/level/10/m_act%5Bcountry%5D/50/" >Тунис</a>                    </div>';
$text = preg_replace('%<a href="(\s*\S*)"(.*?)>(.*?)</a>%', '$3,', $text);
echo $text;
S
На сайте с 07.01.2012
Offline
39
#9

Страны и ссылки могут быть разными, у меня есть переменная html_two, в ней хранится весь текст страницы.

L
На сайте с 07.12.2007
Offline
351
#10
Slient:
Можете продемонстрировать?

$text = <<<HTML

<a href="/level/10/m_act%5Bcountry%5D/8/" >Франция</a>, <a href="/level/10/m_act%5Bcountry%5D/11/" >Великобритания</a>, <a href="/level/10/m_act%5Bcountry%5D/14/" >Италия</a>, <a href="/level/10/m_act%5Bcountry%5D/50/" >Тунис</a> </div>
HTML;
$str = strip_tags($text); // Убрать теги
echo $str.'<br>';
$arr = explode(', ', $str); // Страны - в массив
print_r($arr);
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий