Мне нужна функция PHP для извлечения строки после @ Например, на Facebook, если вы пишете имя_пользователя, имя пользователя будет автоматически заменено URL-адресом профиля. Я хочу сделать что-то подобное, чтобы обнаружить имя_пользователя, чтобы узнать, существует ли имя пользователя в базе данных, а если существует, тогда скрипт вернет URL своего профиля. Я знаю, чтобы проверить, существует ли имя пользователя в базе данных и генерировать URL-адрес профиля, но я не знаю, как определить имя @username из строки (также может быть @ username1, @ username2 и т. Д. В той же строке). Я буду очень признателен, если вы можете дать мне пример или предоставить мне функцию для этого. Спасибо!Строка извлечения PHP после @
ответ
непроверенная, но регулярное выражение заменить (@[A-Za-z0-9]{1,})
найти любой символ A-z0-9 (то, что обычно принимается в качестве имени пользователя)
$text = preg_replace_callback(
'@([A-Za-z0-9]{1,})',
function ($matches) {
return '<a href="profileURL">'.$matches[1].'</a>';
},
$text
);
UPDATE
Основываясь на комментарий, вы может генерировать массив с
preg_match_all('@([A-Za-z0-9]{1,})', $text, $matches);
Это возвращает многомерный массив с $matches[0]
быть оригинальный текст и $matches[1]
с массивом найденных имен (минус @)
Почему бы не' preg_replace ('/ (@ [A-Za-z0-9] {1,}) /', '$1', $ text); '? –
Спасибо, но мне нужно извлечь все эти имена в массиве, тогда я буду использовать этот массив для проверки и проверки по одному, чтобы узнать, существует ли имя пользователя в базе данных или нет. Если существует, я буду генерировать URL-адрес, если не оставил его как есть. Проблема в том, что я не знаю, как извлечь все эти имена пользователей, ведь @ из строки. – Alexander
@Amal Вы можете это сделать, но путем предоставления обратного вызова 'profileURL' можно заменить на фактический URL. @Alexander альтернатива, если вам нужен массив, см. Мое обновление. – AbstractChaos
Если вы уверены, что «@» произойдет только один раз в строке, вы можете использовать функцию php, чтобы пропустить первый символ и взять остальную часть. Или же используйте str_replace(), чтобы заменить «@» на строку. Но если есть возможность получить руду, чем символы «@» в строке, то, вероятно, вы можете использовать explode() для «@» и получить только все строки. Но да, вы должны проверить на валидации в массиве, который вы получите.
- 1. PHP PDO только извлечения 1 строка
- 2. Строка извлечения PHP между разделителями допускает дубликаты
- 3. извлечения Нелегальной строка идентификатор смещения
- 4. питона и строка извлечения
- 5. Строка извлечения в regex
- 6. ошибки возникли после извлечения php в javascript
- 7. Короткая строка после php explode
- 8. PHP Split Строка после конкретных
- 9. Значение, недоступное после извлечения
- 10. Instagram JSON извлечения извлечения PHP
- 11. Заказ строк после извлечения
- 12. Строка проблема извлечения в Arduino
- 13. Строка гиперссылки для извлечения данных строки на другой странице, PHP?
- 14. После извлечения смолы, Изменение разрешений
- 15. Код версии после извлечения
- 16. Запись файла после извлечения данных
- 17. новая строка после элемента xml в php
- 18. Fix Нелегальная строка смещения после обновления PHP
- 19. echo php переменная строка отключена после ampersand
- 20. расщепления строка и извлечения отдельных элементов
- 21. Batch File Текстовая строка извлечения и объединения
- 22. php извлечения родственных объектов
- 23. PHP массив извлечения
- 24. Parse.com извлечения данных PHP
- 25. PHP - цикл извлечения PDO
- 26. Excel строка поиск многопользовательские данные извлечения
- 27. Строка сопоставления строк и извлечения значений
- 28. Строка parse с номером bash и извлечения
- 29. строка извлечения, содержащая пробелы внутри строки (java)
- 30. спящий режим извлечения дополнительного, NULL, строка
Посмотрите вверх [ 'preg_replace_callbac()'] (http://php.net/preg_replace_callback) – kero
Что такое допустимые символы для имен пользователей? – Halcyon
Я использую эту функцию для проверки имен пользователей: preg_match ("/^([a-zA-Z] {4,16})? ([A-zA-Z] [a-zA-Z0-9 _] {4,16 }) $/i ", $ login) – Alexander