我有这个字符串:
525,294,475,215,365,745
我需要删除
475
...及其前面的逗号。
如果我需要删除第一个数字(并且字符串中有多个数字),我需要删除下面的逗号。
我该怎么做?正则表达式?
$newStr = str_replace(',475', '525,294,475,215,365,745');
或者更不容易出错的方法:
$new = array();
$pieces = explode(',', '525,294,475,215,365,745');
foreach ($pieces as $piece) {
if ($piece != 475) {
$new[] = $piece;
}
}
$newStr = implode(',', $new);
这是一个正则表达式:
$s = "525,294,475,215,365,745";
$s = preg_replace(',?475', '', $s);
$data = "525,294,475,215,365,745";
$parts = explode(',', $data);
for ($i = 0; $i < count($parts); $i++) {
if ($parts[$i] == 475) {
unset($parts[$i]);
}
}
$newdata = join(',', $parts);
<?php
$bigString = "525,294,475,215,365,745";
$pos = strpos($bigString, ",");
while($pos != false) {
$newString .= substr($bigString, 0, $pos);
$bigString = substr($bigString, $pos + 1);
$pos = strpos($bigString, ",");
}
echo $newString;
?>
function filterValue($index, &$a)
{
$key = array_search($index, $a);
if ($key != false) {
unset($a[$key]);
}
}
// Original data
$data = "525,294,475,215,365,745";
$data = explode(',', $data);
filterValue('475', $data);
$output = implode(',', $data);
使用带有单词边界的正则表达式和条件匹配表达式将提供一种删除整个整数匹配项和仅删除其邻居逗号(不是两者)的方法,而不会爆炸和重新内爆。
代码:(演示)
echo preg_replace('#(,)?\b' . preg_quote($find) . '\b(?(1)|,?)#', '', $string);
但是,这种操作表明您可能正在使用次优数据类型来管理似乎更适合保存在数组中的内容。