#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 методологии, я бы сделал это с массивом (как указано в другом ответе), но сериализовал его перед входом в базу данных и отключил сериализацию при выходе.
Другим вариантом является создание пользовательского класса, который обрабатывает то же, что и массив, но также может проверять и очищать все, что поступает в базу данных и из нее.
Сказав это. Есть ли особая причина, по которой вы не используете столбцы базы данных для хранения этих данных и не используете связанную таблицу состояния для своих пользовательских кодов? Это значительно упростит обновление и обслуживание вашего программного обеспечения (не говоря уже об отладке!).