strip_tags remove quitar preg_replace preg_match_all preg_match para funcion etiquetas ejemplos php html regex

quitar - remove html tags php



PHP/regex: ¿Cómo obtener el valor de cadena de la etiqueta HTML? (7)

Como los valores de los atributos pueden contener un carácter simple > , pruebe esta expresión regular:

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

Pero las expresiones regulares no son adecuadas para analizar lenguajes no regulares como HTML. Debería utilizar un analizador como SimpleXML o DOMDocument .

Necesito ayuda con expresiones regulares o preg_match porque aún no soy tan experimentado con respecto a esos, así que este es mi problema.

Necesito obtener el valor "obtener", pero creo que mi función tiene un error. La cantidad de etiquetas html es dinámica. Puede contener muchas etiquetas html anidadas como una etiqueta en negrita. Además, el valor "consígame" es dinámico.

<?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; ?>


En su patrón, simplemente desea hacer coincidir todo el texto entre las dos etiquetas. Por lo tanto, podría usar, por ejemplo, un [/w/W] para hacer coincidir todos los caracteres.

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


Los siguientes fragmentos de php devolverían el texto entre etiquetas / elementos html.

expresiones regulares: "/tagname(.*)endtag/" devolverá el texto entre las etiquetas.

es decir

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

Devolverá "ALGÚN TEXTO".

Saludos,

Web-Farmer @ letsnurture.com


Prueba esto

$str = ''<option value="123">abc</option> <option value="123">aabbcc</option>''; preg_match_all("#<option.*?>([^<]+)</option>#", $str, $foo); print_r($foo[1]);


try $pattern = "<($tagname)/b.*?>(.*?)<//1>" y return $matches[2]


$userinput = "http://www.example.vn/"; //$url = urlencode($userinput); $input = @file_get_contents($userinput) or die("Could not access file: $userinput"); $regexp = "<tagname/s[^>]*>(.*)<//tagname>"; //==Example: //$regexp = "<div/s[^>]*>(.*)<//div>"; if(preg_match_all("/$regexp/siU", $input, $matches, PREG_SET_ORDER)) { foreach($matches as $match) { // $match[2] = link address // $match[3] = link text } }


<?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; ?>

Eso debería hacer el truco