Строки — очень важный тип данных, с которым приходится постоянно работать при решении задач веб разработки. В данной статье описаны 10 очень полезных приемов, которые сделают жизнь PHP разработчика легче.
Автоматическое удаление html тегов из строки
При использовании форм, заполняемых пользователем, иногда нужно удалить все лишние теги. Данная задача легко решается с помощью функции strip_tags():
$text = strip_tags($input, "");
function GetBetween($content,$start,$end){
$r = explode($start, $content);
if (isset($r[1])){
$r = explode($end, $r[1]);
return $r[0];
}
return '';
}
Трансформация URL в гиперссылку
Если вы поместите URL в форме комментария в блоге WordPress, она автоматически трансформируется в гиперссылку. Если вы хотите реализовать такую же функциональность на своем сайте или в веб приложении, то можно использовать следующий код:
$url = "Jean-Baptiste Jung (http://www.webdevcat.com)";
$url = preg_replace("#http://([A-z0-9./-]+)#", '<a href="/$1">$0</a>', $url);
Разделяем текст в 140 символный массив для Twitter
Может быть вы знаете, что Twitter принимает сообщения длиной не более 140 символов. Если у вас есть планы организовать взаимодействие своего приложения с популярным социальным сайтом сообщений, то функция, которая обрезает сообщения до 140 символов, наверняка придётся вам ко двору.
function split_to_chunks($to,$text){
$total_length = (140 — strlen($to));
$text_arr = explode(" ",$text);
$i=0;
$message[0]="";
foreach ($text_arr as $word){
if ( strlen($message[$i] . $word . ' ') <= $total_length ){
if ($text_arr[count($text_arr)-1] == $word){
$message[$i] .= $word;
} else {
$message[$i] .= $word . ' ';
}
} else {
$i++;
if ($text_arr[count($text_arr)-1] == $word){
$message[$i] = $word;
} else {
$message[$i] = $word . ' ';
}
}
}
return $message;
}
Удаляем URL из строки
Многие люди оставляют в комментариях блога URL, чтобы получить трафик или организовать обратную связь. Такие ссылки загрязняют блог и могут стать причиной расстройств владельца в случае их большого количества. Так что следующая функция будет очень полезна!
$string = preg_replace('/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i', '', $string);
Конвертируем строку в слаг
Нужно генерировать слаг (для постоянной ссылки), который будет совместим с задачами SEO? Следующая функция принимает строку в качестве параметра и возвращает совместимый с задачами SEO слаг. Просто и эффективно!
function slug($str){
$str = strtolower(trim($str));
$str = preg_replace('/[^a-z0-9-]/', '-', $str);
$str = preg_replace('/-+/', "-", $str);
return $str;
}
Парсинг файла CSV
CSV (Coma separated values — значения, разделённые запятой) файлы — простой способ для хранения и передачи данных, а парсинг таких файлов в PHP выполняется чрезвычайно просто. Не верите? Следующий код демонстрирует обработку CSV файла:
$fh = fopen("contacts.csv", "r");
while($line = fgetcsv($fh, 1000, ",")) {
echo "Contact: {$line[1]}";
}
Поиск строки в другой строке
Если строка содержится в другой строке и вам нужно найти ее, то задача решается просто:
function contains($str, $content, $ignorecase=true){
if ($ignorecase){
$str = strtolower($str);
$content = strtolower($content);
}
return strpos($content,$str) ? true : false;
}
Проверяем, что строка начинается с определённого шаблона
Некоторые языки программирования, например, Java, имеют метод/функцию startWith, которая позволяет проверять, начинается ли строка с определённого шаблона. К сожалению, PHP не имеет такой простой встроенной функции.
Тем не менее, мы можем сделать её для себя, причём, очень просто::
function String_Begins_With($needle, $haystack) {
return (substr($haystack, 0, strlen($needle))==$needle);
}
Выделяем email из строки
Когда-нибудь удивлялись, как спамеры получают ваши email адреса? Все просто. Они берут веб страницу (например, с форума) и проводят парсинг html кода для выделения emails адресов. Ниже приведённый код получает строку в качестве параметра и печатает все email, которые содержатся в ней. Пожалуйста, не используйте данный код для спама!
function extract_emails($str){
// Регулярное выражение, которое извлекает все email из строки:
$regexp = '/([a-z0-9_\.\-])+\@(([a-z0-9\-])+\.)+([a-z0-9]{2,4})+/i';
preg_match_all($regexp, $str, $m);
return isset($m[0]) ? $m[0] : array();
}
$test_string = 'Тестовая строка…
Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
Проверяем другие форматы:
Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.;
<a href="/Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.">foobar</a>
<Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.>
Ещё проверка:
Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
test6[at]example.org
Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
test8@ example.org
test9@!foo!.org
foobar
';
print_r(extract_emails($test_string));