PHP string — Использование коротких кодов для добавления в систему, но как это сделать?

#php #string

#php #строка

Вопрос:

Я хочу взять короткую строку и обработать ее в PHP, чтобы различные ее части можно было вставлять в различные части базы данных.

Это способ, которым я хочу добавить контактную информацию в свою систему.

Я использую серию коротких кодов для обозначения того, что я хочу, чтобы строка выполняла. Итак:

  • NC = Новый контакт
  • DESC = Описание контакта
  • MB = Номер мобильного телефона
  • HM = номер домашнего телефона
  • BS = бизнес-номер
  • EM = адрес электронной почты

Так, например:

$string = "NC John Doe DESC President USA MB 555123123 HM 12341234 EM john@example.net"

И так далее. Я не понимаю, почему должно быть ограничение на длину.

Что бы вы сделали в PHP, чтобы упростить это? Я хочу добавить телефонные номера в таблицу phone, электронные письма в таблицу email и контакты в таблицу contact.

У меня также есть короткие коды для обновлений (чтобы добавить больше номеров к существующим контактам)

  • UPD — Контакт для обновления X
  • AMB — Добавить ячейку
  • (Axx — «A» — добавить)
  • Я не буду заморачиваться с удалением / изменением

$string = "UPD John Doe AMB 55512341233 AEM john2@example.net"

Я знаю, что это немного странный способ ввода данных в систему, но он быстро набирается, когда я в бегах.

Комментарии:

1. Почему бы вам не использовать для этого массив вместо строки? Вы могли бы получить доступ к определенным частям, таким как «что делать по индексу», вместо того, чтобы разлагать / повторно выражать строку.

2. Извините, я ожидал вопросов для мобильных устройств или WordPress: en.wikipedia.org/wiki/Short_code или codex.wordpress.org/Shortcode за использование слова «Короткий код»

3. Я использую строку, потому что я извлекаю данные из Twitter или что-то в этом роде. На самом деле это просто быстрый способ ввода информации, если люди передают ее мне по телефону. Мне следовало бы лучше представить это в приведенных выше примерах. Чтобы привести пример Twitter, кто-нибудь давал мне имя и номер, и я (конфиденциально) твитил: NC Jane Doe MB 555123123 Затем система незаметно проглатывала твит, и данные Джейн были бы там при следующем входе в систему.

4. Не могли бы вы просто создать веб-страницу, на которой была бы кнопка ввода текста и отправки, чтобы вы могли вводить эти команды, вместо того чтобы добавлять шаг запугивания в Twitter? Что происходит в Twitter fail-whales? Что произойдет, если Twitter изменит свой API? Ваше приложение сломается.

Ответ №1:

Я согласен с Майклом Дж.В. по поводу использования массива. Было бы легко добавлять / изменять действия

Пример:

 function getAction($action) {
    $actions = array(
        'NC'    => 'New contact',
        'DESC'  => 'A description of the contact',
        'MB'    => 'A cell phone number',
        'HM'    => 'A home phone number',
        'BS'    => 'A business number',
        'EM'    => 'An email address',
    );
    return $actions[$action];
}

$selected = 'DESC';
echo 'Action Selected: '.getAction($selected)."n";
  

Ответ №2:

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

Итак, при вставке / обновлении / удалении телефонного номера убедитесь, что «тело» команды состоит только из цифр (или только цифр, пробелов и символов , если вы их принимаете) и так далее.

Комментарии:

1. Я думаю, что это может быть способ сделать это. Как будет выглядеть регулярное выражение?

Ответ №3:

Следуя предложенной OP методологии, я бы сделал это с массивом (как указано в другом ответе), но сериализовал его перед входом в базу данных и отключил сериализацию при выходе.

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

Сказав это. Есть ли особая причина, по которой вы не используете столбцы базы данных для хранения этих данных и не используете связанную таблицу состояния для своих пользовательских кодов? Это значительно упростит обновление и обслуживание вашего программного обеспечения (не говоря уже об отладке!).