PHP - 删除重复的管道符号
PHP - remove duplicate pipe symbols
我正在尝试从字符串中删除重复的竖线符号,它们之间有逗号。假设我得到了这个字符串:
$mystring = '| | Apple | Pear | | | Banana | | Cherry';
那么期望的输出应该是:
| Apple | Pear | Banana | Cherry';
这里问了一个类似的问题:
removing duplicate characters next to each other
但是,当我将建议的 preg_replace 函数(如该主题中最流行的答案中所述)应用到我的字符串时,我收到了 PHP 错误:编译失败:无可重复在偏移量 2.
这是我试过的:
$mystring = preg_replace('/ |+/', ' |', $mystring);
有谁知道如何删除双管道符号并将它们替换为单词之间的 1?谢谢。
我不确定这是否是更好的解决方案,但这肯定会对您有所帮助,
$mystring = '| | Apple | Pear | | | Banana | | Cherry';
echo implode(" | ",array_values(array_filter(array_map('trim', explode("|",$mystring)))));//echoes Apple | Pear | Banana | Cherry
查看演示 here
您需要添加一个空白字符:
/[|\s*]+/ - matches | | or | |
/[|\ ]+/ - matches | |
代码:
<?php
$mystring = '| | Apple | Pear | | | Banana | | Cherry';
$mystring = preg_replace('/[|\s*]+/', ' | ', $mystring);
echo $mystring;
输出:
| Apple | Pear | Banana | Cherry
在我看来这很简单 preg_replace
调用:
echo trim(preg_replace('/[ |]+/', ' | ', $mystring));
demo
[ |]+
:基本上匹配这里所有单词之间的space和管道字符,并替换为字符串" | "。因为我们添加了前导和尾随 space,我将结果传递给 trim
以从输出的开头(和结尾)删除那些 space。
你可以试试这个 -
$mystring = '| | Apple | Pear | | | Banana | | Cherry';
echo preg_replace("/[\| ]+/", " | ", $mystring);
输出
| Apple | Pear | Banana | Cherry
我正在尝试从字符串中删除重复的竖线符号,它们之间有逗号。假设我得到了这个字符串:
$mystring = '| | Apple | Pear | | | Banana | | Cherry';
那么期望的输出应该是:
| Apple | Pear | Banana | Cherry';
这里问了一个类似的问题:
removing duplicate characters next to each other
但是,当我将建议的 preg_replace 函数(如该主题中最流行的答案中所述)应用到我的字符串时,我收到了 PHP 错误:编译失败:无可重复在偏移量 2.
这是我试过的:
$mystring = preg_replace('/ |+/', ' |', $mystring);
有谁知道如何删除双管道符号并将它们替换为单词之间的 1?谢谢。
我不确定这是否是更好的解决方案,但这肯定会对您有所帮助,
$mystring = '| | Apple | Pear | | | Banana | | Cherry';
echo implode(" | ",array_values(array_filter(array_map('trim', explode("|",$mystring)))));//echoes Apple | Pear | Banana | Cherry
查看演示 here
您需要添加一个空白字符:
/[|\s*]+/ - matches | | or | |
/[|\ ]+/ - matches | |
代码:
<?php
$mystring = '| | Apple | Pear | | | Banana | | Cherry';
$mystring = preg_replace('/[|\s*]+/', ' | ', $mystring);
echo $mystring;
输出:
| Apple | Pear | Banana | Cherry
在我看来这很简单 preg_replace
调用:
echo trim(preg_replace('/[ |]+/', ' | ', $mystring));
demo
[ |]+
:基本上匹配这里所有单词之间的space和管道字符,并替换为字符串" | "。因为我们添加了前导和尾随 space,我将结果传递给 trim
以从输出的开头(和结尾)删除那些 space。
你可以试试这个 -
$mystring = '| | Apple | Pear | | | Banana | | Cherry';
echo preg_replace("/[\| ]+/", " | ", $mystring);
输出
| Apple | Pear | Banana | Cherry