获取带有/ r / n值的网址查询字符串

时间:2019-07-09 06:54:58

标签: javascript php query-string icalendar

我有这个查询字符串,我想按原样使用这些值,而不用转义/ r / n字符,但是它转义了这些字符。

ics_link=data:text/calendar;charset=utf8,BEGIN:VCALENDAR%0D%0AVERSION:2.0%0D%0ABEGIN:VEVENT%0D%0AUID:4df97e535f751923b70c0bb2c8d7f4d2%0D%0ASUMMARY:Webinar - Crystal Eye Essentials Training Module 1: Introduction to New Partners%0D%0ADTSTART;TZID=UTC:20190710T150000%0D%0ADTEND;TZID=UTC:20190710T163000%0D%0ADESCRIPTION:Webinar - Crystal Eye Essentials Training Module 1: Introduction to New Partners%0D%0ALOCATION:Online%0D%0AEND:VEVENT%0D%0AEND:VCALENDAR

但是它将这样保存它们到文件中,没有任何换行符,并且在日历中导入ics文件时导致错误。

BEGIN:VCALENDARVERSION:2.0BEGIN:VEVENTUID:4df97e535f751923b70c0bb2c8d7f4d2SUMMARY:Webinar - Crystal Eye Essentials Training Module 1: Introduction to New PartnersDTSTART;TZID=UTC:20190710T150000DTEND;TZID=UTC:20190710T163000DESCRIPTION:Webinar - Crystal Eye Essentials Training Module 1: Introduction to New PartnersLOCATION:OnlineEND:VEVENTEND:VCALENDAR

这是我在PHP(Drupal)中使用的代码:

$ics_download = $_GET['ics_link'];

$download_ics = "<a id='download_ics_rp' data-href='$ics_download' class='btn btn-default btn-lg' value='Download ICS' download>Download ICS</a>";
$element = array(
  '#markup' => $download_ics,
);
return $element;

然后在javascript中获取data-href的值,如下所示:

 jQuery('#download_ics_rp').click(function(e) {
      var ics_data = jQuery(this).attr('data-href');

      var win = window.open(ics_data, '_blank');
 });

2 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

$element = array(
  '#type' => 'markup',
  '#markup' => urldecode($download_ics),
);

答案 1 :(得分:0)

尝试一下

$ics_download = $_GET['ics_link'];
$ics_download =  str_replace(PHP_EOL, '%0D%0A', $ics_download);
$download_ics = "<a id='download_ics_rp' data-href='$ics_download' class='btn btn-default btn-lg' value='Download ICS' download>Download ICS</a>";
$element = array(
  '#markup' => $download_ics,
);
return $element;