我想删除位于“^”之间的字符串。
我的代码:
$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”;
请告诉我如何实现这一目标。提前谢谢。
答案 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 +字符(第一个^
表示否定字符类,第二个字面为文字^
)\^
- ^
字符。