如果链接来自Drupals field_link,则Simplexml_load_file将中断


Simplexml_load_file breaks if link comes from Drupals field_link

我正在尝试从谷歌地图动态加载一个KML文件,用户可以通过Drupal中的输入字段(链接字段)配置该文件。然而,我被卡住了,因为下面的工作是完美的,但最后一个没有。

作品:

$xml = simplexml_load_file("Google Maps Link");

同样有效:

$link = "Google Maps Link";
$xml = simplexml_load_file($link);

不起作用:

$link = $fields['field_link']->content;
// produces "
//           http://www....."
$xml = simplexml_load_file($link);

我真的不知道这里发生了什么。我尝试使用trim()htmlspecialchars()(查看任何奇怪的字符),但到目前为止没有任何效果。我只在非对象上得到错误Fatal error: Call to a member function asXML(),但这只是因为xml没有加载。simplexml_load_file返回false。当我打印这两个链接时,它们是相同的。我唯一看到的是Drupal的链接在开头有一些字符,这迫使它进入一行。但不知道如何识别它。

使用代表任何空白字符的preg_replace's从链接中删除未识别(和未指定)的空白:

$link = '
            http://www.example.com';
$link = preg_replace("/'s+/", "", $link);
echo ">" . $link . "<" . PHP_EOL;

输出:

>http://www.example.com<

您现在应该可以使用simplexml_load_file($link);加载它了。