Я получаю RSS-канал с нескольких веб-сайтов и хочу заменить строку из описания.
Описание выглядит так:
<description><![CDATA[
<p>Some text</p>
<p>The post <a rel="nofollow" href="</a> appeared first on <a rel="nofollow" href="</a>.</p>
]]></description>
Во втором <p>
предложение будет "Пост (Заголовок сообщения) появился первым (Ссылка)".
Я хочу удалить это, поскольку я уже ссылаюсь на веб-сайт и хочу получить только само описание.
Вот мой код:
//Strip HTML Tags From The Description, As You See It Contains Some HTML Tags.
$content = strip_tags($item->description);
//Converting The 'XMLObject' Into 'String'.
$content = (string)$content;
//Checking If The Description Contains The Sentence.
if (strpos($content, 'appeared first')) {
//Array With The Links That May Exist At The End Of The Sentence.
$links = array('a', 'b', 'c');
//Loop Through These Links.
foreach ($links as $link) {
//If The Description Contains One Of The Links.
if(strpos($content, $link)){
//The Dynamic String The Would Be Searched For.
$appeared = 'The post '.$item->title.' appeared first on '.$link;
//Replace That String With Empty String.
$content = str_replace($appeared, '', $content);
echo $content;
}//End If Condition.
}//End For Each.
}//End If Condition.
Так, например, если предложение «Пост, который является API, появился первым на a», тогда условия верны, и существует первый индекс в массиве, затем это предложение должно быть удалено, а описание напечатано без него.
Это работает с некоторыми, но не со всеми, и я не знаю почему.
Есть что-то, что я пропускаю? Есть ли лучший способ?