删除 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 而第二个是文字 ^
)
\^
- ^
个字符。
我想删除“^”之间的字符串。
我的代码:
$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 而第二个是文字^
)\^
-^
个字符。