如何在SAS中的href中处理撇号

时间:2019-04-16 20:38:42

标签: html sas

我有一个SAS程序,该程序使用HTML发送电子邮件,但是我尝试引用为链接的文件夹之一包含撇号:

<template>
    <div v-for='review in reviews'>
        <div>
            <p>{{ review.text.slice(0,240) }}
                <span v-show='!showMore' v-if='review.text.length > 240'>...</span>
                <span v-show='showMore' class='extra-text'>{{ review.text.slice(240) }}</span>
            </p>
            <p v-show='!showMore' @click='showMore = true'>Show more</p>
            <p v-show='showMore' @click='showMore = false'>Show less</p>
        </div>
    </div>
</template>

<script>
export default {
    data(){
        return {
            reviews: null,
            showMore: false
        }
    }
}
</script>

此宏变量将在以下宏中使用:

%let body1 = %nrquote(
<ul>
<li><a href='\\server\Studies\Alzheimer's\Documents'>Alzheimer's Documents</a>
</ul>
) ;

您可以想象,%macro sas_email(to=, subject=, body1=, body2=, body3=) ; options emailsys=smtp emailhost=("smtp.gmail.com" port=465) ; filename alert email to=(&to.) subject="&subject." content_type="text/html" debug ; data _null_ ; file alert ; put "&body1." ; %if %length(&body2.) > 0 %then %do ; put "&body2." ; %end ; %if %length(&body3.) > 0 %then %do ; put "&body3." ; %end ; run ; %mend sas_email ; 中的撇号会引起问题。使用双引号而不是单引号给我错误:

\Alzheimer's

1 个答案:

答案 0 :(得分:1)

HTML不在乎您使用双引号还是单引号。因此,您生成的HTML标签可能如下所示:

<a href="\\server\Studies\Alzheimer's\Documents">

如果要将单引号添加到用单引号括起来的字符串中,请对其进行编码。

<a href='\\server\Studies\Alzheimer%27s\Documents'>

由于您将在数据步骤中使用宏变量,因此请尝试在创建值时仅使用%BQUOTE()添加宏引号。这将使您创建一个看起来像不平衡引号的SAS字符串。

%let body1 = %bquote(
<ul>
<li><a href="\\server\Studies\Alzheimer's\Documents">Alzheimer's Documents</a>
</ul>
) ;
%let body2=;
%let body3=;

然后在使用它时避免尝试通过使用symget()函数将宏变量的值拉入实际变量,然后再使用PUT语句编写来扩展宏变量。

data _null_;
  file alert ;
  length str $32767;
  do i=1 to 3;
    str=symget(cats('body',i));
    put str ;
  end;
run;