【发布时间】:2014-05-11 16:17:27
【问题描述】:
我正在尝试将用户在存储在 mysql 数据库中的文本框中发布的一些标记解析为链接,类似于 Reddit 和 StackOverflow 的使用方式:
[foo](http://foo.com) = <a href="http://foo.com">foo</a>
到目前为止,我想出了这个:
if (stristr($text, '[') == TRUE && stristr($text, '](') == TRUE &&
stristr($text, ')') == TRUE && strpos($text, '[') == 0) {
$text = substr($text, 0, strpos($text, ']'));
$href_start = strpos($text, '(');
$href = substr($title, $href_start, strpos($text, ')'));
$text_array = array('[', ']'); $href_array = array('(', ')');
$href = str_replace($href_array, '', $href);
$text_string = str_replace($text_array, '', $text_string);
$text = '<a href="' . $href . '">' . $text_string . '</a>';
}
这有效,但仅当评论以链接开头时,而不是当链接出现在文本中间时。我还需要从括号中的字符串中获取一定数量的文本,用于需要显示的文本标题,所以有时我会这样写最后一个字符串:
$title = '<a href="' . $href . '">' . substr($text, 0, 80) . '</a>';
如果有人能告诉我如何在执行此字符串操作时获取可变数量的文本,那么加分。我知道 PHP Markdown,但我认为这对于我正在尝试做的事情来说太过分了。
【问题讨论】: