我目前有字符串:
"Blah, blah, blah,~Part One, Part Two~,blah blah"
我需要删除~
字符之间的逗号,以便读取。
"Blah, blah, blah,~Part One Part Two~,blah blah"
有人可以帮帮我吗?
非常感谢,
答案 0 :(得分:6)
如果~
和偶数~
之间只有一个逗号,那么
preg_replace("/~([^,]*),([^,]*)~/", "~\1\2~", $text)
应该这样做。
答案 1 :(得分:1)
通过以下几个步骤完成此操作可能更容易:
~
~
内部的部分
','
替换为''
~
也就是说, 可以在正则表达式中执行此操作,假设偶数~
:
<?php
echo preg_replace(
'/(^[^~]*~)|([^~]*$)|([^,~]*),|([^,~]*~[^~]*~)/',
'$1$2$3$4',
'a,b,c,~d,e,f~,g,h,i,~j,k,l,~m,n,o~,q,r,~s,t,u'
);
?>
以上打印(as seen on codepad.org):
a,b,c,~def~,g,h,i,~jkl~m,n,o~qr~s,t,u
有4个案例:
~
,所以下次我们会“在里面”(^[^~]*~)
~
~
,我们就会“在外面”([^~]*$)
~
之前找到下一个逗号(所以我们仍在“内部”)
([^,~]*),
~
而不是逗号,那就出去吧,然后再回到下一个~
([^,~]*~[^~]*~)
在所有情况下,我们确保捕获足以重建字符串。
答案 2 :(得分:0)
$string = "Blah, blah, blah,~Part One, Part Two~,blah blah";
$pos1 = strpos($string, "~");
$substring = substr($string, $strpos, strlen($string));
$pos2 = strpos($string, "~");
$final = substr($substring, $pos1, $pos2);
$replaced = str_replace(",", "", $final);
$newString = str_replace($final, $replaced, $string);
echo $newString;
它完成了这项工作,但我在这里写了它并且可能有问题(至少是性能问题)。