删除php中特殊字符之间的字符串

时间:2017-10-05 12:24:24

标签: php regex preg-replace

我想删除位于“^”之间的字符串。

我的代码:

$search = "/[^](.*)[^]/";
$replace = "";
$string = "^5561^18.5018,73.8636|^5662^20.1738,72.7640";
echo preg_replace($search,$replace,$string);

但我的输出:^^ .. ^^ ..

期望的输出:“8.5018,73.8636 | 20.1738,72.7640”;

请告诉我如何实现这一目标。提前谢谢。

1 个答案:

答案 0 :(得分:1)

[^]模式是无效的字符类。在JavaScript中,它会匹配任何char,因为它被解析为非任何,但在PHP中,它是一个空的(因而无效的)否定字符类。

您需要将^\^匹配,并使用惰性点模式或[^^]*来匹配除^之间的任何字符:

$search = '/\^[^^]*\^/';
$replace = "";
$string = "^5561^18.5018,73.8636|^5662^20.1738,72.7640";
echo preg_replace($search,$replace,$string);
// => 18.5018,73.8636|20.1738,72.7640

请参阅PHP demo

<强>详情

  • \^ - ^字符
  • [^^]* - 除^以外的任何0 +字符(第一个^表示否定字符类,第二个字面为文字^
  • \^ - ^字符。