【发布时间】:2013-01-22 03:58:21
【问题描述】:
由于某种原因,str_replace() 不适用于 /。我正在创建一个函数来接受我正在制作的博客 CMS 的输入和文本区域表单中的独特链接样式。例如,[{http://brannondorsey.com}My Website] 在通过make_link($string); 时将被转换为<a href='http://brannondorsey.com'>My Website</a>。这是我的代码:
function make_link($input){
$double = str_replace( '"', '"', $input);
$single = str_replace("'", "'", $double);
$bracket_erase = str_replace('[', "", $single);
$link_open = str_replace('{', '<a href="', $bracket_erase);
$link_close = str_replace("}", ">", $link_open);
$link_value = str_replace(']', "</a>", $link_close);
echo $link_value;
}
除了] 没有被</a> 替换之外,一切都正常工作。如果我删除斜线,它将成功地将] 替换为<a>,但是,众所周知,这不会正确关闭锚标记,因此会使{ 和下一个关闭锚标记之间的所有html 内容我的网页一个链接。
【问题讨论】:
-
我很确定还有其他事情发生,因为这工作正常:
echo str_replace(']', '</a>', ']'); -
查看源代码,您的浏览器不会将其显示为 html 标签,但源代码会
-
@ExplosionPills 我刚刚尝试了
echo str_replace(']', '</a>', ']');,但它没有回应任何内容。我什至查看了页面源代码并没有找到 标签。
标签: php regex escaping anchor str-replace