Php 在preg_replace中检测线的起点和终点
我让troble检测行首和行尾,并在行中的文本周围包装标签 在匹配的行之间,我不需要任何Php 在preg_replace中检测线的起点和终点,php,regex,preg-replace,Php,Regex,Preg Replace,我让troble检测行首和行尾,并在行中的文本周围包装标签 在匹配的行之间,我不需要任何*。包括我失败的effors。您能帮忙吗?代码: $str=“*这是第一行\n**这是第二行\n***这是第三行\n***这是第三行\n这是第三行”; $result=preg_replace('/^\*([^*].*)$/m','$1',$str); $result=preg_replace('/^\*{2}([^*].*)$/m','$1',$str); $result=preg_replace('/^\
*
。包括我失败的effors。您能帮忙吗?代码:
$str=“*这是第一行\n**这是第二行\n***这是第三行\n***这是第三行\n这是第三行”;
$result=preg_replace('/^\*([^*].*)$/m','$1',$str);
$result=preg_replace('/^\*{2}([^*].*)$/m','$1',$str);
$result=preg_replace('/^\*{3}([^*].*)$/m','$1',$str);
有关详细信息,请参阅
$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);
//将***替换为h3
$str=preg_replace('/^\*{3}([^\*].*)$/','$1',$str);
//将**替换为h2
$str=preg_replace('/^\*{2}([^\*].*)$/','$1',$str);
//将*替换为h1
$str=preg_replace('/^\*([^\*].*)$/'、'$1'、$str);
说明:*
是正则表达式中的一个特殊字符,因此必须对其进行转义,如下所示:\*
^\*
在字符串开头搜索*
[^\*]
搜索非*
的任何内容--方括号用于搜索一类字符,^
表示“非”。因此,为了搜索***
而不匹配***
,我们使用表达式/^\*{3}[^\*]/
您是否正在尝试构建标记解释器?只有4件事。不要认为你可以称它为降价解释器。如果有一个*
它就是H1
。如果有**
它的H2
。即使我从文本框中执行*测试
和**测试2
,它总是H1
正常,那么它不能在单个preg\u replace
中执行。让我来编辑。这很好用。但是如果它的***
确实是*文本
,它应该是按原样打印的。只有带有*
和***
和***
的行需要检查和处理。啊,好的,不清楚是否需要忽略。现在已经修复了。但是现在我可以看到([^*].*)
技巧泄漏到其他答案:)在你的解决方案中,你能让他们检查1、2和3*
s吗。它们的问题是,如果我使用一个,然后输入**Cat
我会得到*Cat。我确实添加了一个
{1},但这没有帮助。有什么帮助吗?****你好
结果是`*你好。不应该发生任何事情。更正了。是否有其他需要说明的规则?****您好打印****您好。无需更改或处理。只有*
和***
和***
需要检查和处理。
*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
$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);
// 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);