gpt4 book ai didi

php - 不管我怎么尝试, & 在 XML 中变成 &

转载 作者:行者123 更新时间:2023-12-04 06:00:43 24 4
gpt4 key购买 nike

我正在创建一个站点地图,我的问题是所有 &在链接中更改为 &
我已经创建了一个函数来解决这个问题,它适用于我网站的其他部分,但 XML 文档中的 url 不会改变。

本栏目htmlspecialchars($query_string);是问题所在。
我已经测试过:

  • esc_url (wordpress)
  • 网址代码
  • html实体
  • htmlspecialchars

  • 这是我的代码
    public function buildSiteMap($type = '', $num = '30') {
    include_once(INCLUDE_DIR.'library.php');

    $result = parent::buildSiteMap($type, $num);
    $entity = str_replace('sl_','',$type);

    $xml = new SimpleXMLElement('<urlset></urlset>');
    $xml->addAttribute('encoding', 'UTF-8');
    $xml->addAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');


    foreach($result as $res):
    $name = str_replace(' ','+',$res['name']);
    $query_string = $entity.'='.$name.'&'.$entity.'id='.$res['id'];
    $url = home_url().'/'.$entity.'/?'.urlencode($query_string);

    $make = $xml->addChild('url');
    $make->addChild('loc',$url);
    $make->addChild('priority','0.80');
    $make->addChild('changefreq','monthly');
    endforeach;

    $dir = get_template_directory();
    $xml->asXML($dir.'/'.$entity.'.xml');
    }

    我究竟做错了什么?

    最佳答案

    听起来是对的:&reserved character in XML:

    The ampersand character (&) and the left angle bracket (<) may appear in their literal form only when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. If they are needed elsewhere, they must be escaped using either numeric character references or the strings "&" and "<" respectively.



    这可能是 XML 库在做的,而不是你的转义函数。

    这基本上是正确的,读取文件的 XML 解析器应该将其解码回来。

    如果它对您不起作用,请将 URL 字段包装在 CDATA 标记中。

    关于php - 不管我怎么尝试, & 在 XML 中变成 &,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8935112/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com