¿Cómo eliminar texto entre tags en php?

A pesar de usar PHP durante años, nunca aprendí a usar expresiones para truncar cadenas correctamente … ¡lo cual ahora me está mordiendo en la parte trasera!

¿Alguien me puede ayudar a truncar esto? Necesito cortar la porción de texto de la url, convirtiendo

text 

dentro

  

 $str = preg_replace('#().*?()#', '$1$2', $str) 

Usando SimpleHTMLDom :

 find('a') as $e) { $e->innerText = null; } // dump contents echo $html; ?> 

¿Qué pasa con algo como esto, teniendo en cuenta que es posible que desee volver a utilizarlo con otros href s:

 $str = 'text'; $result = preg_replace('#(]*>).*?()#', '$1$2', $str); var_dump($result); 

Que te conseguirá:

 string '' (length=24) 

(¿Estoy considerando que cometiste un error tipográfico en el PO?)

Si no necesita hacer coincidir ningún otro href, podría usar algo como:

 $str = 'text'; $result = preg_replace('#().*?()#', '$1$2', $str); var_dump($result); 

Lo cual también lo conseguirá:

 string '' (length=24) 

Como nota al margen: para HTML más complejo, no intente usar expresiones regulares: funcionan bien para este tipo de situación simple, pero para una porción HTML de la vida real, en realidad no ayudan, en general: HTML no es bastante “regular” “suficiente” para ser analizado por expresiones regulares.

Solo use strip_tags() , que eliminaría las tags y dejaría solo el texto deseado entre ellas

Podría usar subcadena en combinación con stringpos, aunque este no es un enfoque muy agradable.

Comprobar: PHP Manual – Funciones de cadena

Otra forma sería escribir una expresión regular para que coincida con sus criterios. Pero para resolver su problema rápidamente, las funciones de cadena funcionarán …

EDITAR: subestimé a la audiencia. 😉 Adelante con las expresiones regulares … ^^

No necesita capturar las tags. Solo apunte al texto entre las tags y reemplácelo con una cadena vacía. Súper simple.

Código: ( Demo )

 $string='text'; echo preg_replace('/]*>\K[^<]*/','',$string); // the opening tag--^^^^^^^^ ^^^^^-match everything before the end tag // ^^-restart fullstring match 

Salida:

  

O en el caso de que el texto del enlace contenga un < , use esto: ~]*>\K.*?(?=)~

Esto evita el gasto de los grupos de captura que usan un cuantificador perezoso, el reinicio de cadena completa \K y un "lookahead".