22:27

php

Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
Здравствуйте.

Подскажите пожалуйста, с примером, функцию php для проверки строки.
Чтобы дать ей строку и набор символов (диапазоном) и она проверила, есть ли в строке какой-нибудь символ, которого нет в заданном наборе. И если такой символ находит, чтобы возвращала его. Ну или его номер в строке.

Комментарии
29.03.2012 в 22:41

The day that you stop running is the day that you arrive.
php.net/preg_match
30.03.2012 в 02:40

на самом деле php.net/strcspn (диапазона там правда не будет, но тестовую строку тоже можно запросто построить если правда надо)

регэкспы на каждый чих это тоже некруто, а то видал я втф типа 'example' ~ /amp/ (вместо substr())
30.03.2012 в 12:15

Sanctus Satanas
На самом деле зависит ещё от кодировки, т.к. strcspn работает с байтами, а не символами. Возможно (если это необходимо), действительно проще будет использовать preg_бла-бла, которые вполне себе unicode-aware (см. модификатор u).
30.03.2012 в 12:18

надо просто запомнить что похапе не может в юникод и не пытаться всучить рыбе зонтик. хотите современные технологии? вам с пыхом не по пути.
30.03.2012 в 13:38

Sanctus Satanas
Зато это быстрее работает. )
Афайк, они вообще планировали прямо_вот_на_самом_деле всё перевести на Unicode (без извращений с mb_string) эдак к 6.0 (которая в итоге превратилась в 5.4), но девелоперам стало лень переписывать рабочий код. &)
Но тут ещё такая штука, что в большинстве случаев нативная поддержка ютф8 тупо не нужна. Что-нибудь типа str_replace будет правильно работать всегда, а PCRE умеет ютф8 из коробки. Вот strlen тот же да — либо mb_string, либо писать костыль.
30.03.2012 в 13:43

да хрен с ними с функциями. у них лексер юникодный?
30.03.2012 в 14:44

Sanctus Satanas
Не вполне догнал, зачем там юникодный лексер. В ютф8 байты < 128 используются только по прямому назначению, есичо.
30.03.2012 в 17:01

ну так не ютф8 единым опять же. юникод к ютф8 вообще говоря имеет опосредованное отношение.
30.03.2012 в 18:34

Sanctus Satanas
Так я не спорю, ютф8 — один из способов записи юникодных кодпоинтов. Нет, на всём, кроме аски/ютф8 пхп подавится, конечно. Другой вопрос: а нафига сорцы хранить в чём-то ещё?
30.03.2012 в 19:08

не похапе решать в чём я храню сырцы. напоминаю, на дворе 2012 год.
30.03.2012 в 19:18

Sanctus Satanas
Печаль.