PHP preg_replace无法在多行中工作

时间:2019-07-18 14:26:22

标签: php regex

我正在尝试删除每行末尾的“-”字符:

$text = "abc - xyz

abc-

-xyz
";

到目前为止,它没有产生预期的结果。

我正在使用以下PHP:

$text = preg_replace("/\-$/m", "*", $text);

所需结果:

$text = "abc - xyz

abc*

-xyz
";

或类似的解决方案。

2 个答案:

答案 0 :(得分:1)

这个简单的表达式很可能用*代替不需要的破折号:

$re = '/-+$/m';
$str = 'abc - xyz
abc-
-xyz
abc - xyz
abc-abc-abc-abc----
-xyz';
$subst = '*';

$result = preg_replace($re, $subst, $str);

echo $result;

输出

abc - xyz
abc*
-xyz
abc - xyz
abc-abc-abc-abc*
-xyz

如果您想探索表达式,请在this demo的右上角进行解释。

答案 1 :(得分:1)

$text = "abc - xyz

abc-

-xyz


123-

---s---

--sss
";


$text = preg_replace("/\-\r$/m", "\r", $text);

echo $text;

产量

abc - xyz

abc

-xyz


123

---s--

--sss