Доброго времени суток! Написал регулярное выражение, но почему-то в нем не работает Casesensivity Может само выражение написано не верно? Я новичок, прошу сильно не пинать. У меня есть многострочный текс в котором встречаются выражения типо: xxxxx подъезд:3 xxx xxxx квартира:156 xxxxx xxx дом:19 xxxx тип:многоэтажный xxx и т.д. Причем регистр может быть любой, например такой пОдЪЕзд: Пытаюсь скрыть из текста тип, номера домов, подьездов, квартир... В идеале конечно бы оставлять слово подъезд: а убирать только сам номер или весь текст идущий после, например, тип: и до пробела Код (PHP): $replace = 'скрыто'; $patterns = "/((подъезд|квартира|дом|тип)(\:).+)/i"; $txt=preg_replace($patterns, $replace, $txt); Но данное выражение не зависимо от /i почему-то чувствительно к регистру и пОдьЕзд: не признает. PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Там где /i сделай так /iu пальцем в небо, но может сработает и про кодировку сообщи, что выше спросили.
массив строк, charset=windows-1251 с Casesensivity разобрался, оказывается код норм работает, была проблема с раскладкой. Помогите со второй часть вопроса, пожалуйста В идеале конечно бы оставлять слово подъезд: а убирать только сам номер подьезда или убирать весь текст идущий после тип: и до пробела
Пример текста: Новый дом воздвигнут в поселке, посреди лесного массива, скорее всего тип:многоэтажный там будет подъездов:5 в любом случае дом:54 получит такую же архитектуру как и дом:52 или что-то очень схожее. Вот такая есть информация .... Надо: Новый дом воздвигнут в поселке, посреди лесного массива, скорее всего тип:скрыто там будет подъездов:скрыто в любом случае дом:скрыто получит такую же архитектуру как и дом:скрыто или что-то очень схожее. Вот такая есть информация .... Регистр букв может отличаться
не совсем понял это как и куда? помимо цифр еще может быть и текст например тип: более того цифры могут одиночно стоять в тексте. Выше это кусок текста
Код (PHP): $replace = ':скрыто'; $patterns = "/(\:\d+)/i"; $txt=preg_replace($patterns, $replace, "Новый дом воздвигнут в поселке, посреди лесного массива, скорее всего тип:многоэтажный там будет подъездов:5 в любом случае дом:54 получит такую же архитектуру как и дом:52 или что-то очень схожее"); var_export($txt);
Спасибо конечно, но в тексте не только цифры после двоеточия, а еще и текст нужно скрывать порой! дом:54, подъезд:5, тип:многоэтажный Код (PHP): $patterns = "/(\:\d+)/i"; Как я понимаю только к цифрам относится. И еще, двоеточие может в тексте встретиться в других местах, например: Цитирую:"Дом будет сноситься" Также цифры могут отдельно быть в тексте например дата или время: Еще 25.04.15 была стройка Вот такие выражение, двоеточия, даты и цифры вообще трогать не нужно. Я хочу именно задать слова с двоеточиями которые хочу экранировать! В стиле: Код (PHP): $patterns = "/((подъезд|квартира|дом|тип)(\:).+)/i"; и скрыть все что идет от двоеточия до пробела, оставив открытыми сами слова которые я указал в перечне. Чтобы получилось так: подъезд:скрыто, квартира:скрыто, дом:скрыто, тип:скрыто Этот код работает, но скрывает все целиком и искоемое слово в перечне и двоеточие и сам текст\цифру PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Код (PHP): $str = 'Новый дом, скорее всего тип:многоэтажный, там будет подъездов:5, в любом случае дом:54 получит такую же архитектуру как и дом:52. Цитирую:Дом будет сноситься'; echo preg_replace("/(тип|дом|подъезд(а|ов)?)\:[а-яё0-9]+/iu", '$1:СКРЫТО', $str); PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Спасибо огромное!!! Это то что надо. Маленькое уточнение. А '$1:СКРЫТО' - вот этот момент нельзя как-то в регулярное выражение всунуть? Потому как у меня переменная на которую заменяется текст это массив и там другие замены идут. Код (PHP): $patterns = array(); $patterns[0] = "/((https|http)+(s)?:(\/\/)(\w)(.[\w]+)([\w\-\.,@?^=%&:;\/~\+#]*[\w\-\@?^=%&:;\/~\+#])?)/i"; $patterns[1] = "/(?:\\+)?[78](?:\\s|-)*[\\(]?(\\d{3})?[\\)]?(?:\\s|-)*(\\d{3})(?:\\s|-)*(\\d{2})(?:\\s|-)*(\\d{2})/"; $patterns[2] = "/(тип|дом|подъезд(а|ов)?)\:[а-яё0-9]+/iu"; $replace = 'скрыто'; $txt=preg_replace($patterns, $replace, $txt); Если ставить Код (PHP): $replace = '$1:скрыто'; то ломаются условия с ссылками и телефонами... PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Код (PHP): $patterns = array(); $patterns[0] = "/((https|http)+(s)?:(\/\/)(\w)(.[\w]+)([\w\-\.,@?^=%&:;\/~\+#]*[\w\-\@?^=%&:;\/~\+#])?)/i"; $patterns[1] = "/(?:\\+)?[78](?:\\s|-)*[\\(]?(\\d{3})?[\\)]?(?:\\s|-)*(\\d{3})(?:\\s|-)*(\\d{2})(?:\\s|-)*(\\d{2})/"; $patterns[2] = "/(тип|дом|подъезд(а|ов)?)\:[а-яё0-9]+/iu"; $replace = array('скрыто','скрыто','$1:скрыто'); $txt=preg_replace($patterns, $replace, $txt);