我想允许我的用户在单个字段中创建网址链接和标签,例如:
立即注册; www.abc123.com
或只是
www.abc123.com
我的代码如下:
$cta_array = explode(";", $field ) ;
if( count( $cta_array ) > 1 ){
$cta = '<a href="'.esc_url( $cta_array[1] ).'" class="button '.$color.'">'.esc_html( $cta_array[0] ).'</a>';
}
else{
$cta = '<a href="'.esc_url( $field ).'" class="button '.$color.'">Select</a>';
}
return $cta;
唯一的问题是,如果他们输入的网址包含带有&符号的查询字符串,那么&符号会被爆炸()函数视为分号,所以如果他们输入
立即预订; http://www.abc123.com/scripts/WebObjects.dll/AAAOnline?association=CAA&club=272
$ cta_array变量返回:
Array
( [0] =&gt;现在预订 [1] =&gt; http://www.aaa.com/scripts/WebObjects.dll/AAAOnline?association=CAA& [2] =&gt;俱乐部= 272 )
我认为它正在改变'&amp;'到&
并且分号用作分隔符,但我不确定如何解决它。
答案 0 :(得分:1)
我用&amp;替换了&
在爆炸之前
$cta_array = explode( ';', str_replace( '&', '&', $cta_array[0]) );
解决了这个问题。
答案 1 :(得分:0)
要求您的用户使用其他分隔符,例如逗号。 或者以编程方式更改分隔符。
$cta_array = explode(“|”, str_replace(‘;’,’|’,$field));