2010-11-18 3 views
0

У меня есть эта строка:Заменить строку в PHP

525.294.475.215.365.745

и мне нужно удалить 475..and запятой. , и если мне нужно удалить первый номер, мне нужно удалить и следующую запятую, также для последней. Я могу это сделать? регулярное выражение? ТНХ

ответ

1

Вот регулярное выражение:

$s = "525,294,475,215,365,745"; 
$s = preg_replace(',?475', '', $s); 
+0

могу ли я заменить 475 переменной? – Ste

+0

@Ste. Вы можете, но регулярное выражение, предложенное Дональдом, не будет работать, если вы попытаетесь удалить первый элемент в списке, потому что не было бы «,». Более безопасный способ заключается в том, чтобы взорвать строку в массив, удалить элемент и затем объединить массив обратно в строку. – dotariel

+1

@Ste - Вы могли бы, например: $ num = 475; $ s = preg_replace (",? $ num", '', $ s); Обратите внимание на двойные кавычки. @ XSaint32 - The? после запятой делает его необязательным, поэтому он должен соответствовать как (475), так и (, 475). – Donald

0
$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); 
2
$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); 
+0

взрываются скоро б Я устал, я предлагаю использовать preg_split ("/, /") вместо – mhughes

+1

@mhughes С тех пор, когда он взорвался устаревшим? –

+0

@Mike C. Это еще не устарело, это запланировано (или, по крайней мере, было, в конце концов, фиаско php 6). php> = 5.3.0 рекомендует заменить взрыв с помощью preg_split – mhughes

0
<?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; 
?> 
0
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); 
Смежные вопросы