Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: отрицание слов
Форумы портала PHP.SU » PHP » Регулярные выражения » отрицание слов

Страниц (1): [1]
 

1. dadli - 27 Декабря, 2011 - 18:40:44 - перейти к сообщению
приветствую.
например есть строка
$str = 'круто в пхп 5 програмировать';

вот если напишим так:

ето анзачает что ми заменим всо кроме символ т, к пустату, резултат такои: тт ето понятно.
а как написат отрицание вся слов? или несколко слов? тоест как написать такое:
"заменит всю к пустату кроме пхп 5"
ето виведит пхп5 п, и понятно почему. но хелателни резултат такои: пхп 5
как такое сделать?
2. Champion - 27 Декабря, 2011 - 18:43:29 - перейти к сообщению
dadli пишет:
"#[^пхп 5]#u"

'/(?:(?!text to be not replaced).)*?/'
3. dadli - 27 Декабря, 2011 - 18:57:20 - перейти к сообщению
Champion

значит так ?
PHP:
скопировать код в буфер обмена
  1. $str = 'круто в пхп5 програмировать';
  2. echo preg_replace('/(?:(?!пхп5).)*?/u','',$str);

если да, виведит один такои символ �
(кодировка пхп фаила utf-8)
(Добавление)


кожется я очен криво написал перви пост, может бить сеичас понимаите
в шаблоне ето [^т] азначает "все кроме символ т"
а как написать все кроме какоита слов полностю? то есть как написать "все кроме ямайка" ?
4. DeepVarvar - 27 Декабря, 2011 - 19:35:42 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. echo preg_replace("#.*(пхп 5).*#u",'$1','круто в пхп 5 програмировать');


Champion, интересно, почему твой вариант не работает?
А еще волнует вопрос - почему отрицание действует на класс, но не действует на подмаску?
5. Champion - 27 Декабря, 2011 - 19:35:48 - перейти к сообщению
А блин. Да, логично.
preg_replace('[^п][^х][^п][^5]/u','',$str);
Тогда такая штука например
(Добавление)
или
preg_match_all('/(пхп5)/', $str, $m[1]);
$res = join('', $m);
6. DeepVarvar - 27 Декабря, 2011 - 19:39:19 - перейти к сообщению
Хы - а мой вариант лучше Радость
7. dadli - 27 Декабря, 2011 - 20:06:50 - перейти к сообщению
DeepVarvar


Champion
Цитата:
или
preg_match_all('/(пхп5)/', $str, $m[1]);
$res = join('', $m);

конечно так резултат получаем, но интересно било именно ето: так скажем: "отрицание вся слов" не возможно?

Champion
Цитата:
preg_replace('[^п][^х][^п][^5]/u','',$str);
Тогда такая штука например


PHP:
скопировать код в буфер обмена
  1. $str = 'круто в пхп5 програмировать';
  2. echo preg_replace('#[^п][^х][^п][^5]#u','',$str);

а так, вот что получаем: ппь не понятно почему? вообшем неожидаеми резултат Не понял

 

Powered by ExBB FM 1.0 RC1