Почему str_replace не работает с преобразованным XMLObject? - PullRequest
0 голосов
/ 28 июня 2018

Я получаю 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», тогда условия верны, и существует первый индекс в массиве, затем это предложение должно быть удалено, а описание напечатано без него.

Это работает с некоторыми, но не со всеми, и я не знаю почему.

Есть что-то, что я пропускаю? Есть ли лучший способ?

...