Все ленты — последние статьи

Преобразование текста в ссылку с помощью регулярных выражений

Качественные программы предоставляют пользователю большой набор различных удобных и полезных функций. Хорошо продуманный интерфейс берет на себя обработку простых задач, и нам не надо беспокоится о том, чтобы их решать. Например, если набирать строку “www.ruseller.com” в тексте email или в сообщении, можно ожидать, что она станет ссылкой, по которой можно перейти на указанный ресурс, без дополнительных действий по вставке тегов HTML. Другой пример, парсинг текста из фида твиттера. Например, “@desktopped — это блог на английском языке по теме#computers“, можно ожидать, что и @desktopped и #computers будут ссылками.

Функция “преобразования текста в ссылку” является великолепным инструментом, который надо использовать при разработке блога или веб сайта. Возможные варианты использования:

 

Преобразование URL адресов в ссылки в тексте содержания, комментариев и везде, где они встречаются
Преобразование правильного email адреса в ссылку
Преобразование текста из твитера в ссылки на ресурсы, например, @desktopped, #computers, www.ruseller.com.

Поиск строки по шаблону, такому как строки, начинающиеся с “http://” или “@”, представляет возможность для улучшения способов обработки и отображения данных в приложениях.

Как можно реализовать такие функции? Наилучшим способом для PHP является использование синтаксиса описания текстовых фрагментов, который называется регулярными выражениями, и нескольких функций PHP.
Основы регулярных выражений

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

соединяет два возможных значения и определяет совпадение, если строка соответствует хотя бы одному из значений. Например, hi hello соответствует строкам “hi” и “hello”
() используется для группировки значений и установки порядка операций. Например, br(i y)an соответствует и “brian” и “bryan”.
[] используется для определения совпадений одному из символов, указанному в скобках. [abc] соответствует “a”, “b”, или “c”, но не “d”.
* определяет совпадение, если предшествующий элемент либо отсутствует, либо встречается любое количество раз. Строка go*gle соответствует “ggle”, “gogle”, “google”, “gooogle”, и так далее.
+ определяет совпадение, если предшествующий элемент встречается один или более раз. Строка go+gle соответствует строкам “gogle”, “google”, gooogle”, и так далее.
? определяет совпадение, если предшествующий элемент либо отсутствует, либо встречается один раз. Строка desktopp?ed соответствует строкам “desktopped” и “desktoped”.

Другие общие специальные символы

w определяет совпадение с символами, используемыми при составлении слов, то есть с цифробуквенными символами и ‘_’
n r и t определяют совпадение с символами новой строки, переноса каретки и табуляции соответственно.

Описание всех специальных символов можно найти здесь:

http://www.php.net/manual/en/function.preg-replace.php#89364 на английском языке.

Функция preg_replace принимает в качестве аргументов шаблон регулярного выражения, строку замещения, и текст для проверки. Она проверяет текст на соответствие шаблону и в случае совпадения помещает определённый кусок текста в строку замещения.

Часть текста, которая помещается в строку замещения, определяется выражением в круглых скобках в строке шаблона. Позиция определяется с помощью символов $0, $1, $2 и так далее, где $n соответствует n-му шаблону в круглых скобках.
Пример использования
1 $text= 'My name is Brian';
2 $pattern = 'My name is (Brian Sam Zach)';
3 $replacement = '$1 is a pretty cool guy.';
4 echo preg_replace($pattern, $replacement, $text);

Код выводит “Brian is a pretty cool guy.”. Если текст будет “My name is Zach”, то код выведет “Zach is a pretty cool guy.”. Но если текст будет “My name is Nick”, то совпадений не будет найдено, и код выведет “My name is Nick”.
Полезные функции с использованием регулярных выражений

5 $text= preg_replace("/(^ [n ])([a-z0-9&-_.]+?)@([w-]+.([w-.]+)+)/i", "$1$2@$3>", $text);

3 $text= preg_replace("/@(w+)/", 'http://www.twitter.com/$1">@$1', $text);

3 $text= preg_replace("/:(w+):/", 'http://www.buildinternet.com/tag/$1/">$1',$text);

Данная функция выделяет термины поиска в результатах поиска в вашем блоге WordPress. Передайте ей массив ключевых слов и она сделает все остальное (нужно использовать цикл)

function highlight_terms($keys_array)
{
$title = get_the_title();
return preg_replace('/('.implode(' ', $keys_array) .')/iu', '<span class="highlight">$0</span>', $title);
}

Функция получает любую строку (обычно заголовок страницы) и генерирует слаг URL.
view source
print?
1 function create_slug($string)
2 {
3 $string= strtolower(trim($string));
4 $string= preg_replace('/[^a-z0-9-]/', '-', $string);
5 $string= preg_replace('/-+/', "-", $string);
6 return $string;
7 }