$data = $_POST['data'];
echo '<form method="post"><textarea name="data"></textarea><input type="submit">';
echo preg_replace( "#/*[?+]/n#", "[h1]$1[/h1]",$str );
是否可以preg_replace
检测一行的开头,并根据开头的几个字符将某个html代码应用于整行?
这里,基于*,如果数据是:
*This is row one
//output <h1>This is row one</h1>
**This is row two
//output <h2>This is row two</h2>
***This is row three
//output <h3>This is row three</h3>
***This is row * three
//output <h3>This is row * three</h3>
This is row * three
//output This is row * three
我正在检测行的开头和行的结尾,并在行中的文本周围包裹标签。
我不需要在匹配的行之间有任何*
。我的失败之情包括在内。你能帮忙吗?
答案 0 :(得分:1)
$str = "*This is row one\n**This is row two\n***This is row three\n***This is row * three\nThis is row * three";
$result = preg_replace('/^\*([^*].*)$/m', '<h1>$1</h1>', $str);
$result = preg_replace('/^\*{2}([^*].*)$/m', '<h2>$1</h2>', $str);
$result = preg_replace('/^\*{3}([^*].*)$/m', '<h2>$1</h2>', $str);
答案 1 :(得分:1)
有关详细信息,请参阅http://www.regular-expressions.info/anchors.html
// replace *** with h3
$str = preg_replace('/^\*{3}([^\*].*)$/', '<h3>$1</h3>', $str);
// replace ** with h2
$str = preg_replace('/^\*{2}([^\*].*)$/', '<h2>$1</h2>', $str);
// replace * with h1
$str = preg_replace('/^\*([^\*].*)$/', '<h1>$1</h1>', $str);
说明:*
是正则表达式中的特殊字符,因此必须对其进行转义,如下所示:\*
。
^\*
在字符串的开头搜索*
。 [^\*]
搜索任何非*
的内容 - 方括号用于搜索一类字符,而^
表示“不是”#39}。因此,要搜索***
而不匹配****
,我们使用表达式/^\*{3}[^\*]/
。