0

我正在解析一个 XML 文件,它的创建者卡在一堆社交媒体信息中,这对我来说完全没用。我想在将数据插入数据库之前将其删除。

问题是它并不完全相同,有些情况是:

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

有些列出的社交网站较多,有些则较少。我真的很想删除整个部分。这也是运行 strip_tags 后的 vardump。原来的样子是这样的:

<strong>Be a Social Butterfly! Connect & Learn More Below:</br></strong>
<a target="_blank" href="http://www.kiran-indian.com">Website</a> •&lt;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>

我用 preg_replace 摆脱了整个句子“成为社交蝴蝶......”

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

我的一个朋友建议使用 strpos 来查找第一个/最后一个部分,并使用 substr 删除其间的所有内容,但遗憾的是我还不够先进,无法弄清楚如何做到这一点。

提前致谢!

描述字段:

       
食物总是做一件事。它可以帮助你保持活力。但它可以做得更多。它可以是一种教育、运输和激励你的体验。在 <a target="_blank" href="http://www.kiran-indian.com/home.htmls">Kiran Indian Cuisine</a> 享用午餐或晚餐,这不仅仅是避免挨饿的机会day --- 这是一个打破常规的机会,用最新鲜的食材和最芳香的调味料制作美味的家常菜。他们每周 7 天营业,从上午 11 点到晚上 11 点,接受所有主要信用卡,而且当您从周边地区在线订购时,送货是 100% 免费的。</br></br>

<strong>做一只社交蝴蝶!在下方联系并了解更多信息:</br></strong>
<a target="_blank" href="http://www.kiran-indian.com">网站</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>

似乎将该代码粘贴到此处会自动调整 asci/etc。

4

1 回答 1

0

您需要在整个文本中找到第一个字符串的位置,使用strpos它,然后您需要找到要删除的块末尾的位置,再次使用strpos. 现在您有了要删除的块的起点和终点,substr_replace用 nothing 替换它''substr_replace将要删除的块的长度作为第四个参数,而不是与第三个参数一样的位置,因此您需要从第二个位置 int 中减去第一个位置 int 来计算长度。

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

测试:http ://www.ideone.com/1X5gI

于 2011-08-30T23:44:42.827 回答