jQuery@mention使输出成为链接
jquery @mention making the output a link
嘿伙计们,我正在使用霍基的这个插件。它就像推特,你可以@mention某人。我的输出有问题。此方法:
updateHidden: function() {
var trigger = this.options.trigger;
var contents = this.element.val();
for(var key in this.id_map) {
var regex = trigger+key;
regex = regex.replace(/[!@#'$%'^&'*'(')'+=-'[']''';,'.'/'{'}'|":<>'?~_]/g, '''$&');
regex = new RegExp(regex, "g");
//contents = contents.replace(regex, trigger+'['+this.id_map[key]+']');
//I changed the code above to:
contents = contents.replace(regex, '@[' + this.id_map[key] +':' + key + ']');
}
$(this.options.hidden).val(contents);
}
上面的代码将被输出到一个隐藏的标签,影响其值,其中
输出: @[123:peterwateber]//格式为 @[]。
我使用 PHP 作为我的后端。 我的问题是我想将输出转换为
<a href="www.something.com/profile?pid=123">peterwateber</a>
我对这里的代码有很大的问题,因为我不擅长正则表达式。我想出了代码:
//THIS CODE SHOULD GET 1234,peterwateber,88,hi.
$string = "@[1231:peterwateber] sdfsdfsdfsdfsdfsdf@[88:hi]sddsf";
preg_match_all("^'[(.*?)']^",$string,$matches,PREG_PATTERN_ORDER);
foreach ($matches[1] as $match) {
echo $match.'<br/>'; //outputs 1231:peterwateber, 88:hi
}
preg_match_all("^'[(['w'd]+):(.*?)']^",$string,$aw,PREG_PATTERN_ORDER);
foreach ($aw[1] as $match) {
echo $match.'<br/>'; //sad to say this code outputs the text '1231 and 88'
}
此外,为了能够获得输出,我有以下表格:
<form class="form-horizontal" data-post="request" method="post">
<div class="control-group boxTextAreaHolder">
<textarea placeholder="What are you thinking?" class="UITextarea" title="What are you thinking?" name="statuspost" id="statuspost" tag-status="this"></textarea>
<input type="hidden" name="tags" id="tag-post" />
</div>
</form>
提交后,输出将处理到此函数。此函数不允许任何 htmlspecialchars 并检测类似 "http://stackoverflow.com"
private static function validate_text($text = '') {
// This method is used internally as a FILTER_CALLBACK
if (mb_strlen($text, 'utf8') < 1)
return false;
// Encode all html special characters (<, >, ", & .. etc) and convert
//$str = nl2br(htmlspecialchars($text));
$str = htmlspecialchars($text);
// the new line characters to <br> tags:
// Remove the new line characters that are left
$str = str_replace(array(chr(10), chr(13)), '', $str);
$text = preg_replace('#(script|about|applet|activex|chrome):#is', "''1:", $str);
$ret = ' ' . $text;
$ret = preg_replace("#(^|['n ])(['w]+?://['w'#$%&~/.'-;:=,?@'[']+]*)#is", "''1<a href='"''2'" target='"_blank'">''2</a>", $ret);
$ret = preg_replace("#(^|['n ])((www|ftp)'.['w'#$%&~/.'-;:=,?@'[']+]*)#is", "''1<a href='"http://''2'" target='"_blank'">''2</a>", $ret);
$ret = preg_replace("#(^|['n ])([a-z0-9&'-_.]+?)@(['w'-]+'.(['w'-'.]+'.)*['w]+)#i", "''1<a href='"mailto:''2@''3'">''2@''3</a>", $ret);
//$ret = preg_replace("#^*@([)([0-9-])(])#is", "''1<a href='"http://''2'" target='"_blank'">''2</a>", $ret);
$ret = substr($ret, 1);
return $ret;
}
现在的问题是我不知道如何将@[1234:peterwateber]转换为**<a href="www.something.com/profile?pid=123">peterwateber</a>**
以及如何从htmlspecialchar中排除锚标签
正则表达式取 1231 - 彼得瓦特伯和 88 - 嗨是
preg_match_all("#@'[('w+)':('w+)']#', $str);
这取决于输入字符串中的字符类型。 'w
假设您只有"单词"字符(字母和数字)。
$hidden_input = '@[123:web]hello world!';
preg_match('#@'[('w+)':('w+)']'s*(.*)$#', $hidden_input, $m);
echo '<a href="'.m[1].'">'.$m[2].'</a>'.$m[3];
function validate_text($text = '') {
// This method is used internally as a FILTER_CALLBACK
if (mb_strlen($text, 'utf8') < 1)
return false;
// Encode all html special characters (<, >, ", & .. etc) and convert
//$str = nl2br(htmlspecialchars($text));
$str = htmlspecialchars($text);
// the new line characters to <br> tags:
// Remove the new line characters that are left
$str = str_replace(array(chr(10), chr(13)), '', $str);
$text = preg_replace('#(script|about|applet|activex|chrome):#is', "''1:", $str);
$ret = ' ' . $text;
$ret = preg_replace("#(^|['n ])(['w]+?://['w'#$%&~/.'-;:=,?@'[']+]*)#is", "''1<a href='"''2'" target='"_blank'">''2</a>", $ret);
$ret = preg_replace("#(^|['n ])((www|ftp)'.['w'#$%&~/.'-;:=,?@'[']+]*)#is", "''1<a href='"http://''2'" target='"_blank'">''2</a>", $ret);
$ret = preg_replace("#(^|['n ])([a-z0-9&'-_.]+?)@(['w'-]+'.(['w'-'.]+'.)*['w]+)#i", "''1<a href='"mailto:''2@''3'">''2@''3</a>", $ret);
//$ret = preg_replace("#^*@([)([0-9-])(])#is", "''1<a href='"http://''2'" target='"_blank'">''2</a>", $ret);
$ret = substr($ret, 1);
return $ret;
}
var_dump(validate_text('@[123:peterwateber] fsdfsdfdsf'));
给出string(30) "@[123:peterwateber] fsdfsdfdsf"
在此处输入代码
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 如何使用jQuery自动打开页面上的所有链接
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- jquery动画可以通过编程链接吗
- 在单击href链接的同时下载文件
- 如何在每个下拉菜单项的每个类别下输出链接
- 如何将JavaScript数组输出到HTML链接
- 输出代码后更改链接中的 URL
- Jquery 输出链接的 alt 悬停
- jQuery@mention使输出成为链接
- 使用JavaScript检测窗口大小并输出到脚本的链接
- 当嵌入式链接不存在时,如何输出警报消息
- 如何链接一个表单输出到一个谷歌融合表查询使用javascript
- 用javascript过滤输出的图像链接
- 在一个输出中针对多个链接定位来自链接的文本值
- 如何在angular js中添加动态输出的链接
- 将输出图像设置为当前URL链接
- 在javascript中获取输出以显示为链接
- Google街景https请求是以html格式输出链接,而不是发送请求
- Javascript:添加HTML到字符串-创建一个链接并将其添加到输出