strpos eliminar texto / html

Estoy analizando un archivo XML, sus creadores están atrapados en un montón de información de redes sociales que es completamente inútil para mí. Me gustaría eliminarlo antes de insertar los datos en el archivo db.

El problema es que no es todo lo mismo, algunas ocurrencias son:

Be a Social Butterfly! Connect & Learn More Below: Website • Facebook • Yelp

Algunos tienen más sitios sociales en la lista y otros menos. Realmente me gustaría eliminar toda esa parte. también esto es un vardump después de ejecutar strip_tags. El original se ve así:

<strong>Be a Social Butterfly! Connect & Learn More Below:</br></strong>
<a target="_blank" href="http://www.kiran-indian.com">Website</a> •<a target="_blank" href="http://www.facebook.com/pages/Kiran-Indian-Cuisine/55785994435"> Facebook</a> • <a target="_blank" href="http://www.yelp.com/biz/kiran-indian-cuisine-new-york">Yelp</a>

Usé preg_replace para deshacerme de la oración completa "sé una mariposa social ..." con

$description = strip_tags(preg_replace('/\bBe a Social Butterfly! Connect & Learn More Below\b/', '', $value['redemptionLocations']['description']));

Un amigo mío sugirió el uso de strpos para encontrar la primera / última parte y substr para eliminar todo lo que hay en el medio, pero lamentablemente no estoy lo suficientemente avanzado para descubrir cómo hacerlo.

Gracias de antemano!

campo de descripción:

       
La comida siempre hace una cosa. Te ayuda a mantenerte vivo. Pero puede hacer más. Puede ser una experiencia que lo eduque, lo transporte y lo vigorice. El almuerzo o la cena en Kiran Indian Cuisine es mucho más que una oportunidad para no morirse de hambre un día más: es una oportunidad para salir de la norma con deliciosos platos caseros que utilizan los ingredientes más frescos y los condimentos más aromáticos disponibles. Están abiertos los 7 días de la semana de 11 a. ¡Sea una mariposa social! Conéctese y obtenga más información a continuación: Sitio web • Facebook • Yelp

Parece que pegar ese código aquí ajusta automáticamente asci / etc.

preguntado el 30 de agosto de 11 a las 22:08

¿Desea eliminar el sitio que aparece después de las oraciones de "..Butterfly ..", independientemente del número de sitios? -

sí, quita todo de esa oración hasta el final que es . No estoy seguro de cómo funciona eso, ya que técnicamente está analizando toda la información dentro de -

Entonces el formato es algo como: ¡Sé una mariposa social! .. lista de sitios , ryt? -

¿Podemos ver cómo se ve el feed? -

La parte social de la mariposa es solo la última parte del -

1 Respuestas

Necesita encontrar la posición de la primera cadena en todo el texto, use strpos para eso, debe encontrar la posición al final del fragmento que desea eliminar, nuevamente use strpos. Ahora que tiene el punto inicial y final del fragmento que desea eliminar, use substr_replace para reemplazarlo con nada ''. substr_replace toma la longitud del fragmento para eliminar como el cuarto parámetro, en lugar de la posición como con el tercer parámetro, por lo que debe restar la primera posición int de la segunda posición int para calcular la longitud.

$feedtext='<description> this part is important...  be a social butterfly .. blah blah etc etc whatever whatever </description>';

$pos1=strpos($feedtext,'be a social butterfly');
$pos2=strpos($feedtext,'</description>');
$len=$pos2-$pos1;
$newtext=substr_replace($feedtext,'',$pos1,$len);

echo $newtext;

probado: http://www.ideone.com/1X5gI

Respondido 31 ago 11, 03:08

Probé el código anterior, reemplacé $ feedtext con $ feedtext = $ value ['redemptionLocations'] ['description'], muestra todo dentro de - Mike

@mike probablemente necesitará cambiar las cosas que se buscan en las variables pos1 y pos2 (distinguen entre mayúsculas y minúsculas). El código funciona, lo vinculé a un ejemplo de trabajo. Si no funciona, es porque las cadenas de las que está tratando de obtener la posición no están en el pajar que le está pasando. - profitphp

¿Funciona esto en caracteres asci? Estoy intentando establecer pos1 como "<strong> Sea una mariposa social" y pos2 como "</a>". Mike

Si así es exactamente en la cadena que está proporcionando ($ feedtext), entonces sí, funcionará bien. - profitphp

¿Es posible hacer que strpos goto sea el final absoluto sin definir un conjunto particular de caracteres? - Mike

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.