@Obivankinobi

Как составить правильную регулярку?

Добрый день. Что-то мне никак не дается следующая задачка:
Требуется для каждого элемента g получить содержимое тэга text, но иногда внутри этого тега встречается тег tspan..
То есть в идеале здесь https://regex101.com/r/eAGpvp/1 на выходе я должен получить
1. Деловой центр (МКЦ)
2.Лужники
Но сойдет и такой вариант
1. Деловой центр
2.Лужники

Спасибо.
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 2
@zhainar
Гуглю за вас
если решать не в регулярках:
$text =<<<EOL
	<g id="L-14-st-230" display="inline" opacity="1">
                        <text transform="matrix(1 0 0 1 226.6597 827.2749)" enable-background="new    "><tspan x="0" y="0" fill="#191919" font-family="'PTSans-Regular'" font-size="16">Деловой центр</tspan><tspan x="31.6" y="14" fill="#191919" font-family="'PTSans-Regular'" font-size="16">(МЦК)</tspan></text>
                     </g>

<g id="L-14-st-228" display="inline" opacity="1">
                        <text transform="matrix(1 0 0 1 444.9458 1066.8765)" fill="#191919" font-family="'PTSans-Regular'" font-size="16">Лужники</text>
                     </g>
EOL;

$text = str_replace('</text>', '</text>|||', $text);
$text = strip_tags($text);
$lines = explode('|||', $text);

foreach($lines as $key => &$line)
{
	$line = trim($line);
	if(empty($line))
		unset($lines[$key]);
}

var_dump($lines);
Ответ написан
Комментировать
targumon
@targumon
<text[^>]+>.*?([а-яёА-ЯЁ\(\)]+(?:\s+[а-яёА-ЯЁ\(\)]+)*).*?<
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы