Что такое регулярное выражение, которое позволит мне получить текст внутри этого тега?

#php #regex

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

Вопрос:

Используя регулярное выражение, как я могу удалить / заменить все и сохранить только оценку внутри тега?

Переменная data-v is .

 <a href="/football/italy/1-division-phase-a/fixtures/7-days/#" data-y="f1" data-v="this-is-variable">2 - 0</a>
 

Комментарии:

1. DOM Не используйте регулярное выражение.

2. @anubhava поскольку это последний шаг для моего сценария, я не собираюсь менять всю свою работу

Ответ №1:

Это действительно зависит от контекста, но если вы можете полагаться на ‘data-y =»f1″‘ в качестве привязки к странице, что-то вроде этого должно сработать:

 if (preg_match('{<a href="[^"] "[^>]*sdata-y="f1"[^>]*>([^<] )</a>}', $data, $match) { ... use $match[1] ... }
 

Я не проверял это, но я объясню это, чтобы вы могли точно настроить:

 {          open regexp (instead of /)
<a href="  literal match
[^"]       anything up to the next " (so you match the href url)
"          literal
[^>]*      any other content of the <a ...> tag which you don't care about
s         make sure there is a space
data-y="f1"  literal match (your "anchor")
[^>]*      any other content you don't care about
>          literal (close <a>)
([^<] )    payload
</a>       literal
}          close regexp
 

Ответ №2:

Вы можете использовать регулярное preg_match() выражение для выбора целевой части строки.

 preg_match("/>([^<] )</", $str, $matches);
echo $matches[1];
 

Смотрите результат в демо


Кроме того, поскольку ваша строка является html, вы можете проанализировать ее с помощью DOMDocument class и получить текст элемента.

 $dom = DOMDocument::loadHTML($str);
$text = $dom->getElementsByTagName("a")->item(0)->nodeValue;
 

Смотрите результат в демо