Я использовал шаблон /[a-z0-9_]+/i
внутри функции:
function validate_twitter($username) { if (eregi('/[a-z0-9_]+/i', $username)) { return true; } }
При этом я проверяю, является ли вход действительным именем пользователя Twitter, но у меня возникают трудности, поскольку он не дает мне действительного результата.
Может кто-то поможет мне найти решение.
Чтобы проверить правильность строки:
function validate_username($username) { return preg_match('/^[A-Za-z0-9_]{1,15}$/', $username); }
Если вы пытаетесь @username
в строке.
Например: RT @username: lorem ipsum @cjoudrey etc...
Используйте следующее:
$string = 'RT @username: lorem ipsum @cjoudrey etc...'; preg_match_all('/@([A-Za-z0-9_]{1,15})/', $string, $usernames); print_r($usernames);
Вы можете использовать последний с preg_replace_callback, чтобы связать имена пользователей в строке.
Редактировать: Twitter также открывает исходные текстовые библиотеки для Java и Ruby для соответствия именам пользователей, хэш-тегам и т. Д. Возможно, вы могли бы изучить код и найти шаблоны регулярных выражений, которые они используют.
Изменить (2): Здесь находится порт PHP текстовой библиотеки Twitter: https://github.com/mzsanford/twitter-text-php#readme
Не используйте /
с ereg*
.
На самом деле, не используйте ereg*
вообще, если вы можете избежать этого. http://php.net/preg_match
edit : Обратите внимание, что /[a-z0-9_]+/i
будет совпадать с spaces are invalid
и not-a-real-name
. Вы почти наверняка хотите /^[a-z0-9_]+$/i
.
S
Я считаю, что вы используете форму PCRE, и в этом случае вместо этого вы должны использовать функцию preg_match .
eregi()
не ожидает каких-либо /
или дополнительных переключений. Просто используйте eregi('[a-z0-9_]+')
Ваше регулярное выражение действительно, хотя оно позволяет пробелы FYI. (Если вы хотите проверить регулярные выражения, я рекомендую: http://rubular.com/ ).
Первый вопрос здесь – использование eregi
которое устарело от PHP 5.3. preg_match
этого рекомендуется использовать preg_match
, он имеет тот же синтаксис. Попробуйте и посмотрите, поможет ли это.
Документация PHP для preg_match: http://www.php.net/manual/en/function.preg-match.php Документация по PHP для eregi: http://php.net/manual/en/function.eregi.php
Имена пользователей Twitter имеют от 1 до 15 символов … так что это может быть даже лучше с /^[a-z0-9_]{1,15}$/i
.