Статьи

10 фрагментов кода PHP для работы со строками


Строки являются очень важным видом данных, и вам приходится ежедневно иметь дело с ними при выполнении задач веб-разработки.
В этой статье я собрал 10 чрезвычайно полезных функций и фрагментов кода, чтобы облегчить жизнь вашему php-разработчику.

 

Автоматически удалять HTML-теги из строки

В пользовательских формах вы можете удалить все ненужные HTML-теги. Это легко сделать с помощью функции strip_tags ():

$text = strip_tags($input, "");

Источник: http://phpbuilder.com/columns/Jason_Gilmore060210.php3?page=2

Получить текст между $ start и $ end

Это функция, которую каждый веб-разработчик должен иметь в своем наборе инструментов для будущего использования: дать ему строку, начало и конец, и он вернет текст, содержащий $ start и $ end.

function GetBetween($content,$start,$end){
    $r = explode($start, $content);
    if (isset($r[1])){
        $r = explode($end, $r[1]);
        return $r[0];
    }
    return '';
}

Источник: http://www.jonasjohn.de/snippets/php/get-between.htm 

Преобразовать URL в гиперссылки

Если вы оставите URL-адрес в форме комментариев блога WordPress, он автоматически преобразуется в гиперссылку. Если вы хотите реализовать те же функции на своем веб-сайте или в своем веб-приложении, вы можете использовать следующий код:

$url = "Jean-Baptiste Jung (http://www.webdevcat.com)";
$url = preg_replace("#http://([A-z0-9./-]+)#", '<a href="http://www.catswhocode.com/blog/$1" style="font-size: 12px; vertical-align: baseline; background-color: transparent; margin: 0px; padding: 0px; color: #3777af; text-decoration: none; font-weight: bold">$0</a>', $url);

Источник: http://phpbuilder.com/columns/Jason_Gilmore060210.php3?page=2

Разделить текст на массив из 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;
}

Источник: http://www.phpsnippets.info/split-text-up-into-140-char-array-for-twitter 

Удалить URL из строки

Когда я вижу количество URL-адресов, которые люди пытаются оставить в комментариях к моему блогу, чтобы получить трафик и / или обратные ссылки, я думаю, что я обязательно должен попробовать этот фрагмент!

$string = preg_replace('/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i', '', $string);

Источник: http://snipplr.com/view.php?codeview&id=15236 

Конвертировать строки в слизни

Нужно создать слагов (постоянные ссылки), которые оптимизированы для SEO? Следующая функция принимает строку в качестве параметра и возвращает SEO-дружественный слаг. Просто и эффективно!

function slug($str){
	$str = strtolower(trim($str));
	$str = preg_replace('/[^a-z0-9-]/', '-', $str);
	$str = preg_replace('/-+/', "-", $str);
	return $str;
}

Источник: http://snipplr.com/view.php?codeview&id=2809 

Разобрать CSV файлы

Файлы CSV (значения, разделенные запятыми) являются простым способом хранения данных, а их синтаксический анализ с помощью PHP очень прост. Не веришь мне? Просто используйте следующий фрагмент и убедитесь сами.

$fh = fopen("contacts.csv", "r");
while($line = fgetcsv($fh, 1000, ",")) {
    echo "Contact: {$line[1]}";
}

Источник: http://phpbuilder.com/columns/Jason_Gilmore060210.php3?page=1

Поиск строки в другой строке

Если строка содержится в другой строке, и вам нужно искать ее, это очень умный способ сделать это:

function contains($str, $content, $ignorecase=true){
    if ($ignorecase){
        $str = strtolower($str);
        $content = strtolower($content);
    }
    return strpos($content,$str) ? true : false;
}

Источник: http://www.jonasjohn.de/snippets/php/contains.htm

Проверьте, начинается ли строка с определенного шаблона

В некоторых языках, таких как Java, есть метод / функция startWith, который позволяет проверить, начинается ли строка с определенного шаблона. К сожалению, PHP не имеет аналогичной встроенной функции.
Как бы то ни было, мы просто должны построить свое собственное, что очень просто:

function String_Begins_With($needle, $haystack {
    return (substr($haystack, 0, strlen($needle))==$needle);
}

Источник: http://snipplr.com/view.php?codeview&id=2143 

Извлечение писем из строки

Задумывались ли вы, как спаммеры могут получить ваш адрес электронной почты? Это просто, они получают веб-страницы (например, форумы) и просто анализируют html для извлечения писем. Этот код принимает строку в качестве параметра и будет печатать все электронные письма, содержащиеся внутри. Пожалуйста, не используйте этот код для спама ;)

function extract_emails($str){
    // This regular expression extracts all emails from a string:
    $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 = 'This is a test string...

        [email protected]

        Test different formats:
        [email protected];
        <a href="[email protected]">foobar</a>
        <[email protected]>

        strange formats:
        [email protected]
        test6[at]example.org
        [email protected]
        test8@ example.org
        test9@!foo!.org

        foobar
';

print_r(extract_emails($test_string));

Источник: http://www.jonasjohn.de/snippets/php/extract-emails.htm