Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在preg_replace中检测线的起点和终点_Php_Regex_Preg Replace - Fatal编程技术网

Php 在preg_replace中检测线的起点和终点

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('/^\

我让troble检测行首和行尾,并在行中的文本周围包装标签

在匹配的行之间,我不需要任何
*
。包括我失败的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);