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

Removing string between special characters in php

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

我的代码:

$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”;

请让我知道如何实现这一目标。提前致谢。

[^] 模式是无效字符 class。在 JavaScript 中,它将匹配任何字符,因为它被解析为 non-nothing,但在 PHP 中,它是一个空的(因此无效)否定字符 class.

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

$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+ 个字符(第一个 ^ 表示否定字符 class 而第二个是文字 ^)
  • \^ - ^ 个字符。