替换'&'与'&'在PHP字符串中

时间:2016-04-06 15:17:58

标签: php xml rss

我需要将字符串中的&转换为php中的&。我有一个功能可以将一些自定义数据输入到RSS源中。在这种情况下,它是一个类似于http://google.com?something=here&somethingelse=here&somethingelse=there

的网址

问题是Feed中的放大器显示并且未转换为&因此当我尝试使用simplepie获取Feed时,它会抛出错误This XML document is invalid, likely due to invalid characters. XML error: not well-formed (invalid token)

这是我必须将自定义数据添加到Feed中的功能:

/** Add ACF fields to RSS **/
add_action('rss2_item', 'cupusa_rss2_item');
function cupusa_rss2_item() {
    global $post;

    $memberEvent_link = get_field('member_event_link', $post->ID);

    $output = '';
    if( $post->post_type == 'jobs' ) {
        $job_link_url = get_field('job_link', $post->ID);

            $output .= "<job_link>{$job_link_url}</job_link>";

    }

    if($memberEvent_link){
        $output .= "<member_event_link>{$memberEvent_link}</member_event_link>";
    }

    echo $output;
}

当使用simplepie时,如果它应该是正确的xml http://google.com?something=here&somethingelse=here&somethingelse=there

所以我的问题是如何修改上面的函数以将http://google.com?something=here&#038;somethingelse=here&#038;somethingelse=there转换为&变量的&#038;?有时链接可能有&amp;有时可能没有。

1 个答案:

答案 0 :(得分:2)

The htmlspecialchars function将转换所有在XML中具有特殊含义的字符。

$job_link_url = get_field('job_link', $post->ID);
$xml_safe_job_link_url = htmlspecialchars($job_link_url, ENT_XML1 | ENT_QUOTES);