LINUX.ORG.RU

Как оставить в строке символы, скажем, \x36,\x38 (и все в диапазоне 50h-57h)

 ,


0

1

Господа, как заставить окаянный preg_replace оставить в строке ТОЛЬКО символы \x36,\x38, а также все в диапазоне 50h-57h?.. (в реале одиночных символов там больше, и диапазонов тоже несколько).

Заранее спасибо большое за пример!

UPD: Нужно чтобы здесь было несколько диапазонов, и еще отдельные символы, просто перечисленные «через запятую»:

preg_replace('/[\x{00ff}-\x{ffff}]/u', ", $str);


UPD: проблема решена

В моем случае всю латиницу, кириллицу, цифры и дефис удалось очистить (от всего остального ненужного) командой:

$posle_chistki=preg_replace('/[^A-EF-OP-Ya-cd-mn-wx-zА-ЗИ-СТ-ЫЬ-еж-пр-щъ-я2-901ZЁё-]/u',",$na_chistku);

SmAdm ()
Ответ на: комментарий от marvin_yorke

\w - слишком радикально

s/[^ \x36\x38]//g - на sed баша похоже, а мне нужно было в php

Спасибо, в любом случае!

SmAdm ()
Ответ на: комментарий от SmAdm

это перл. суть не меняется, диапазон [^ ... ] матчится как «все кроме символов, входящих в диапазон»

marvin_yorke ★★★ ()
Ответ на: комментарий от marvin_yorke

согласен, но суть не меняется - перечислять каждый символ напряг, нужно чтобы и выборочно можно было ставить их, и within a range

SmAdm ()
Ответ на: комментарий от SmAdm

так это ж тот же самый range, только с отрицанием [^A-Z\x36\x38] - все кроме заглавных английских букв, \x36 и \x38
перечисляешь просто все, что тебе нужно оставить и все

marvin_yorke ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.