|
|
|
| Возможно ли заменить идущие подряд одинаковые символы таким же количеством других символов? (если количество > 1)
Например "заменить__подчеркивание____на_тире" = "заменить--подчеркивание----на_тире" ? | |
|
|
|
|
|
|
|
для: yuk
(01.02.2008 в 09:28)
| |
<?
$text = "заменить__подчеркивание____на_тире";
$text = str_replace("_", "-", $text);
print $text; // заменить--подчеркивание----на-тире
|
| |
|
|
|
|
|
|
|
для: Саня
(01.02.2008 в 11:40)
| | В этом случае скрипт будет заменять _ на -, даже если идёт 1 символ подряд. А нужно заменять, если 1+. | |
|
|
|
|
|
|
|
для: yuk
(01.02.2008 в 09:28)
| | Пожалуй, preg_replace("/_(?=_)|(?<=_)_/", "-", $text); ... | |
|
|
|
|
|
|
|
для: yuk
(01.02.2008 в 09:28)
| | Попробовал такой способ, вроде работает!
<?php
$text = "заменить__подчеркивание____на_тире";
$text = str_replace("__","--",$text);
$text = str_replace("-_","--",$text);
echo $text;
?>
|
| |
|
|
|
|
|
|
|
для: Freddie_X
(01.02.2008 в 19:57)
| | Спасибо kasmanaft, спасибо Freddie_X, оба варианта работают. Правда, в случае с str_replace если в исходном тексте встретится конструкция -_ то она будет преобразована в --, хотя по условию должна такой и остаться. Но меня такой вариант устраивает.
И, к слову, хотелось бы разобраться с выражением
preg_replace("/_(?=_)|(?<=_)_/", "-", $text);
а то пытался сделать нечто подомное сам, но ничего не вышло.
Как я понял, (?=_) значит, что следующий символ _, а (?<=_) что предыдущий был _. Я правильно понял? | |
|
|
|
|
|
|
|
для: yuk
(01.02.2008 в 22:29)
| | Да, всё верно. | |
|
|
|