#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;
Смотрите результат в демо