0

我已经尝试了很多很多解决方案,但不幸的是,对我来说没有任何效果。以下是我的代码。

<?php
$x = "09-27,09-28,10-01,10-02";
$y = preg_replace("/09-\w*,/", "", $x);
echo $y;
?>

这将输出 10-01,10-02 现在,我想要否定它,所以输出将是:09-27,09-28 但我就是找不到方法。非常感谢,我需要我能得到的所有帮助。我想要的是替换不等于给定模式的字符串。

4

2 回答 2

2

只需匹配您要删除的部分。

$y = preg_replace("~,?10-\w*,?~", "", $x);

演示

解释:

,?                       ',' (optional)
10-                      '10-'
\w*                      word characters (a-z, A-Z, 0-9, _) (0 or more times)
,?                       ',' (optional)
于 2014-11-03T03:39:31.807 回答
0
,(?=[^,]+,[^,]*$).*$

试试这个。替换为empty string.See 演示。

http://regex101.com/r/tF4jD3/1

$re = "/,(?=[^,]+,[^,]*$).*$/";
$str = "09-27,09-28,10-01,10-02";
$subst = "";

$result = preg_replace($re, $subst, $str);
于 2014-11-03T08:55:44.340 回答