|
|
|
| Здравствуйте.
Есть строка, например, 495-111-11-11, в которой надо заменить второе и последующие вхождения "-" на пусто.
1. Можно ли это сделать одной регуляркой?
2. Можно ли в регулярке задавать конфиг замен, т.е. заменять четные/нечетные найденные значения или конкретные, например, на позициях 1,3,4 и 7? | |
|
|
|
|
|
|
|
для: dtopenya
(05.05.2012 в 11:59)
| |
$a = "495-111-11-11";
function fin($match) {$match[2] = preg_replace("/-/","",$match[2]); $text = $match[1].$match[2]; return $text;}
echo preg_replace_callback("/(.+?-.+?)-(.+)/","fin",$a);
|
А второй вопрос можно через preg_match_all сделать | |
|
|
|
|
|
|
|
для: dtopenya
(05.05.2012 в 11:59)
| | > последующие вхождения "-" на пусто
На пусто - это на пробел или удалить?
> 495-111-11-11
Если это конкретный и единственный формат, то можно. Если возможно
495-111-11 11
495-111-1111
495-111 11 11
495-11-1-1-1-11
| то врядли. Ну или отосплюсь - подумаю =)
> 2. Можно ли.....
Нет | |
|
|
|
|
|
|
|
для: Sfinks
(07.05.2012 в 13:23)
| |
<pre><?php
$s = array ( '495-111-11-11' ,
'495-111-1111' ,
'495-111 11 11' ,
'495-11-1-1-1-11' );
$pattern = "#(?<!^\d)(?<!^\d{2})(?<!^\d{3})[\-\s](\d+)#";
foreach($s as $number)
echo preg_replace( $pattern , "$1" , $number )."\n";
?></pre>
|
495-1111111
495-1111111
495-1111111
495-1111111
|
| |
|
|
|
|
|
|
|
для: Sfinks
(07.05.2012 в 19:05)
| | Немного не то.
Я думал, что есть спецсимволы, с помощью которых можно задать параметры замены, как, например, для выборки символов {1,3}.
Все равно спасибо за ответы. | |
|
|
|