我有一个类似于stackoverflow的ask-page中的textarea。现在我想将一些文本替换为某些特定模式。换句话说,我想在文本周围添加一些标签。我想要这样的东西:
**bold**
__underline__
*italics*
--strike--
[linkname](www.example.com)
好吧,我是PHP的新手......但我是用javascript做的:
text.replace(/\*\*(.*?)\*\*/g, "<b>$1</b>");
text.replace(/__(.*?)__/g, "<u>$1</u>");
text.replace(/\*(.*?)\*/g, "<i>$1</i>");
text.replace(/--(.*?)--/g, "<del>$1</del>");
// also I didn't know do that for link-href
// I want this: <a href="www.example.com">linkname</a>
那么,我怎么能用php做到这一点? (我想检查客户端和服务器端的内容,因为javacript可能在某些访问者的系统上被停用)
答案 0 :(得分:1)
对于PHP,有一个名为preg_replace
的函数,这是您要搜索的函数。
对于链接的第二个问题,您可以执行类似的操作,这样可以进行简单的检查,以确保URL有效。
(?:^\[)(.*?)(?:\]\()(www\..+?\.\D+?)(?:\))
更新1:
根据要求简单使用我的正则表达式:
<?php
$string = '[linkname](www.example.com)';
$pattern = '/(?:^\[)(.*?)(?:\]\()(www\..+?\.\D+?)(?:\))/';
$replacement = '${1}, $2';
echo preg_replace($pattern, $replacement, $string);
为了更轻松地完成所有这些操作,您可以使用此PHP类:(由@ miken32建议):
https://github.com/erusev/parsedown/blob/master/Parsedown.php#L1171