Obtenga contenido dentro de una etiqueta html usando php y reemplácelo después del procesamiento

Tengo un html (sample.html) como este:

    

some content

¿Cómo obtengo la parte de contenido que está entre el comentario de 2 html '' usando php? Quiero obtener eso, hacer un procesamiento y colocarlo de vuelta, ¡así que tengo que conseguirlo y ponerlo! ¿Es posible?

esafwan: podrías usar una expresión de expresiones regulares para extraer el contenido entre el div (de un cierto id).

Ya hice esto para las tags de imagen, por lo que se aplican las mismas reglas. miraré el código y actualizaré el mensaje un poco.

[actualizar] prueba esto:

 ]*'.$attr.'="'.$value.'">(.*?)<\\/div>/si'; preg_match($tag_regex, $xml, $matches); return $matches[1]; } $yourentirehtml = file_get_contents("test.html"); $extract = get_tag('id', 'content', $yourentirehtml); echo $extract; ?> 

o más simplemente:

 preg_match("/]*id=\"content\">(.*?)<\\/div>/si", $text, $match); $content = $match[1]; 

jim

Si se trata de un reemplazo simple que no implica el análisis sintáctico del documento HTML real, puede usar una Expresión regular o incluso simplemente str_replace por esto. Pero, en general, no es aconsejable usar Regex para HTML porque el HTML no es regular y generar patrones confiables puede convertirse rápidamente en una pesadilla .

La forma correcta de analizar HTML en PHP es utilizar una biblioteca de análisis que realmente sepa cómo dar sentido a los documentos HTML. Su mejor apuesta nativa sería DOM, pero PHP tiene otras extensiones XML nativas que puede usar y también hay una serie de bibliotecas de terceros como phpQuery , Zend_Dom , QueryPath y FluentDom .

Si utiliza la función de búsqueda, verá que este tema se ha cubierto ampliamente y que no debería tener problemas para encontrar ejemplos que muestren cómo resolver su pregunta.

 ",$content); $comment=explode("",$comment[1]); var_dump(strip_tags($comment[0])); ?> 

mira esto, funcionará para ti

Eche un vistazo aquí para ver un ejemplo de código que significa que puede cargar un documento HTML en SimpleXML http://blog.charlvn.com/2009/03/html-in-php-simplexml.html

A continuación, puede tratarlo como un objeto SimpleXML normal.

EDITAR: Esto solo funcionará si quieres el contenido en una etiqueta (por ejemplo, entre

y )

El problema es con los divs nesteds encontré una solución aquí

 contents
// where "contents" may contain nested
s. // Regex uses PCRE's recursive (?1) sub expression syntax to recurs group 1 $pattern_long = '{ # recursive regex to capture contents of "main" DIV # match the "main" class DIV opening tag ( # capture "main" DIV contents into $1 (?: # non-cap group for nesting * quantifier (?: (?!]*>|
). )++ # possessively match all non-DIV tag chars | # or ]*>(?1) # recursively match nested
xyz
)* # loop however deep as necessary ) # end group 1 capture # match the "main" class DIV closing tag }six'; // single-line (dot matches all), ignore case and free spacing modes ON // short version of same regex $pattern_short = '{((?:(?:(?!]*>|).)++|]*>(? 1))*)}si'; $matchcount = preg_match_all($pattern_long, $data, $matches); // $matchcount = preg_match_all($pattern_short, $data, $matches); echo("
\n"); if ($matchcount > 0) { echo("$matchcount matches found.\n"); // print_r($matches); for($i = 0; $i < $matchcount; $i++) { echo("\nMatch #" . ($i + 1) . ":\n"); echo($matches[1][$i]); // print 1st capture group for match number i } } else { echo('No matches'); } echo("\n

"); ?>