我有一个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
答案 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;