PHP: самый быстрый способ проверить на недопустимые символы (все кроме a-z, A-Z, 0-9, #,-., $)?

web2py составляет 265 кбайт исходного кода, и все включено 1.2 МБ (сравните с 4.6 МБ Django). Все же web2py сделает все, в чем Вы нуждаетесь (управляйте сессией, cookie, запросом, ответом, кэшем, интернационализацией, ошибками/билетами, абстракцией базы данных для GAE, SQLite, MSSQL, MySQL, Пост-ГРЭС, Oracle, FireBird, и т.д.), этому не нужна установка - просто разархивировали и нажимают на него - и можно сделать разработку в браузере.

Web2py имеет оба маршрута и обратные маршруты.

Web2py имеет иерархический шаблон системы, что означает, что представление может расширить расположение, которое может расширить другое расположение, и т.д. представления могут также включать другие представления.

10
задан hakre 13 August 2012 в 12:04
поделиться

5 ответов

Попробуйте эту функцию:

function isValid($str) {
    return !preg_match('/[^A-Za-z0-9.#\\-$]/', $str);
}

[^ A-Za-z0-9. # \ - $] описывает любой недопустимый символ. Если preg_match находит совпадение (недопустимый символ), он вернет 1 и 0 в противном случае. Кроме того, ! 1 является ложным , а ! 0 является истинным . Таким образом, isValid возвращает false , если обнаружен недопустимый символ, и true в противном случае.

34
ответ дан 3 December 2019 в 13:22
поделиться

Семейство функций preg немного быстрее, чем ereg . Чтобы проверить недопустимые символы, попробуйте что-нибудь вроде:

if (preg_match('/[^a-z0-9.#$-]/i', $buffer)) print "Invalid characters found";
3
ответ дан 3 December 2019 в 13:22
поделиться

preg_match быстрее и мощнее, чем ereg:

if(preg_match('/^[^a-z0-9\.#\-\$]*$/i', $sString) > 0) //check if (doesn't contain illegal characters) is true
{
  //everything's fine: $sString does NOT contain any illegal characters
}

или измените его:

if(preg_match('/[a-z0-9\.#\-\$]/i', $sString) === 0) //check if (contains illegal character) is false
{
  //everything's fine: $sString does NOT contain any illegal characters
}
1
ответ дан 3 December 2019 в 13:22
поделиться

Вы захотите перейти на использование preg вместо ereg . Семейство функций ereg устарело, и (начиная с php 5.3) их использование будет вызывать предупреждение PHP, и вскоре они будут удалены с языка. Кроме того, неофициально было сказано, что функции preg в целом быстрее, чем ereg.

Что касается скорости, то, исходя из моего опыта и кодовых баз, которые я видел за свою карьеру, оптимизация такой производительности строк была бы преждевременной. на данном этапе. Оберните сравнение в какую-нибудь логическую функцию или метод

//pseudo code based on OP 
function isValidForMyNeeds($buffer)
{
    if (ereg("[A-Za-z0-9]\.\#\-\$", $buffer) === false)
    {
        echo "buffer only contains valid characters: a-z, A-Z, 0-9, #, -, ., $";
    }
}

, а затем, когда / если вы определите, что это проблема производительности, вы можете применить любую необходимую оптимизацию в одном месте.

3
ответ дан 3 December 2019 в 13:22
поделиться

Используйте preg isntead, его быстрее и ereg производство прекращено.

1
ответ дан 3 December 2019 в 13:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: