PHP/regex: Как получить строковое значение HTML-тэга?

Вы можете использовать вложенное понимание ist, проверяя, являются ли all символы в строках (при условии, что все элементы являются строками) ., а затем итерируя отдельные символы, в противном случае берется сам элемент.

>>> Item0, Item1 = "Item0", "Item1"
>>> lst = [Item0,'.','.','.','...','.',Item1,'.','.']
>>> [y for x in lst for y in (x if all(c=='.' for c in x) else [x])]
['Item0', '.', '.', '.', '.', '.', '.', '.', 'Item1', '.', '.']
34
задан hakre 29 October 2012 в 12:47
поделиться

4 ответа

<?php
function getTextBetweenTags($string, $tagname) {
    $pattern = "/<$tagname ?.*>(.*)<\/$tagname>/";
    preg_match($pattern, $string, $matches);
    return $matches[1];
}

$str = '<textformat leading="2"><p align="left"><font size="10">get me</font></p></textformat>';
$txt = getTextBetweenTags($str, "font");
echo $txt;
?>

Это должно сработать

66
ответ дан 27 November 2019 в 16:17
поделиться

В вашем шаблоне вы просто хотите сопоставить весь текст между двумя тегами. Таким образом, вы можете использовать, например, [\ w \ W] , чтобы сопоставить все символы.

function getTextBetweenTags($string, $tagname) {
    $pattern = "/<$tagname>([\w\W]*?)<\/$tagname>/";
    preg_match($pattern, $string, $matches);
    return $matches[1];
}
8
ответ дан 27 November 2019 в 16:17
поделиться

Следующие ниже фрагменты php возвращают текст между тегами / элементами html.

regex: "/tagname(.*)endtag/" возвращает текст между тегами.

т.е.


$regex="/[start_tag_name](.*)[/end_tag_name]/";
$content="[start_tag_name]SOME TEXT[/end_tag_name]";
preg_replace($regex,$content); 

Он вернет "НЕКОТОРЫЙ ТЕКСТ".

С уважением,

Web-Farmer @ Letnurture.com

0
ответ дан 27 November 2019 в 16:17
поделиться

Поскольку значения атрибутов могут содержать простой символ > , попробуйте это регулярное выражение:

$pattern = '/<'.preg_quote($tagname, '/').'(?:[^"'>]*|"[^"]*"|\'[^\']*\')*>(.*?)<\/'.preg_quote($tagname, '/').'>/s';

Но регулярные выражения не подходят для синтаксического анализа нерегулярных языков, таких как HTML. Вам лучше использовать парсер, например SimpleXML или DOMDocument .

2
ответ дан 27 November 2019 в 16:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: