- Урок 3. Переменные в PHP
- Как создать переменную в PHP
- Вывод переменных PHP
- Операции с переменными PHP
- php вывод текста и переменной | Особенности
- Какие кавычки правильно использовать для вывода текста в PHP
- Встраиваем вывод из PHP в HTML
- Как убрать из переменной часть символов?
- 3 ответа 3
- Всё ещё ищете ответ? Посмотрите другие вопросы с метками php или задайте свой вопрос.
- Похожие
- Подписаться на ленту
- Функции для работы со строками
- Содержание
- User Contributed Notes 24 notes
Урок 3. Переменные в PHP
1. Как создать переменную PHP?
3. Вывод переменных PHP
3. Операции с переменными PHP
Переменные в php — это некий информационный контейнер, который может содержать в себе различные типы данных (текст, цифры, массивы и так далее). В целом переменные позволяют создавать, хранить, изменять, а в дальнейшем оперативно обращаться к информации, заданной в них.
Как создать переменную в PHP
Вначале переменные содержат знак $ (доллар) — обозначение использования переменной, потом буквы латинского алфавита (от a до z и маленькие и большие), в конце могу содержать цифры. Также в названии допускается использование нижнего подчёркивания (не в конце).
Как можно называть переменные:
$var
$variable
$year1945
$_variable
Как нельзя называть переменные:
$1 — состоит только из цифры
$1var — нельзя начинать название переменной с цифры
$/var — из дополнительных символов допускается только нижнее подчёркивание _
$переменная — кириллица разрешена документацией php, но не рекомендуема
$var iable — нельзя использовать пробелы
Пробелы, какие-либо знаки, кроме нижнего подчёркивания — запрещены. Кириллицу (русские буквы) в документации к php использовать разрешено. НО далеко не везде подобные переменные будут правильно интерпретированы, поэтому используйте только латинницу. |
Каждой переменной присваивается значение. Для присвоения значения используется знак = (равно). В течение обработки скрипта значение переменной может неоднократно меняться в зависимости от разных условий.
Имена переменных чувствительны к регистру букв: например, $name — не то же самое, что $Name или $NAME |
Вывод переменных PHP
Отдельно следует разобрать то, как отобразить переменные при помощи операторов вывода, работу которых мы разобрали в прошлом уроке Создание странцы PHP. Операторы вывода. . Ниже приведу ряд наглядных примеров с комментариями.
Операции с переменными PHP
Арифметические операции в PHP
В случае с числовыми значениями можно проводить арифметические операции: сложение, вычитание, умножение и так далее.
-$a (отрицание) Смена знака $a.
$a + $b (сложение) Сумма $a и $b.
$a — $b (вычитание) Разность $a и $b.
$a * $b (умножение) Произведение $a и $b.
$a / $b (деление) Частное от деления $a на $b.
$a % $b (деление по модулю) Целочисленный остаток от деления $a на $b.
Рассмотрим примеры
Операции инкремента и декремента в PHP
Данные операции пригодятся в основном при построении циклов, о которых поговорим чуть позже.
Префиксный — операторы, прописанные ПЕРЕД переменной (—$a; ++$a). Возвращают значение переменной до изменений.
Постфиксный — операторы, прописываемые после переменной ($a—; $a—). Возвращают значение переменной с изменениями.
Инкремент — увеличения значения.
Декремент — уменьшение значения.
++$a Префиксный инкремент. Увеличивает $a на единицу и возвращает значение $a.
$a++ Постфиксный инкремент. Возвращает значение $a, а затем увеличивает $a на единицу.
—$a Префиксный декремент. Уменьшает $a на единицу и возвращает значение $a.
$a— Постфиксный декремент. Возвращает значение $a, а затем уменьшает $a на единицу.
Булевы типы (это значения типа Правда или Неправда — True False) не подлежат инкрементированию и декрементированию. А в случае если в значении переменных символы, при инкрементировании и декрементировании будет выводить ближайшее значение по таблице символов. Например: . X,Y,Z,AA,AB,AC и так далее. |
Операции присвоения в PHP
Базовый оператор выглядит как =. На первый взгляд может показаться, что это оператор равно. На самом деле это не так. В действительности, оператор присвоения означает, что левый операнд получает значение правого выражения, (т.е. устанавливается результирующим значением). Комбинированные операторы — это такие операторы, которые позволяют использовать предыдущие значения переменных для последующих операций (дописывать в строковую переменную (с текстом) или складывать числовые значения).
Существуют также операции сравнения и логические, но о них мы поговорим в следующих уроках. Постараюсь сразу не пугать Вас большим объёмом информации!)
Источник
php вывод текста и переменной | Особенности
Решил я написать эту статью, чтобы расставить точки как правильно и когда выводить данные. Статья не простая, поэтому если Вы ещё никогда не выводили текст ранее, то лучше начните с первого урока курса по PHP, а уже как опыта наберётесь, тогда заглядывайте сюда.
Чтобы вывести на экран текст мы используем одну из следующих конструкций языка: echo или print, либо функцию printf. Давайте разберём варианты и их особенности:
Функция printf позволяет нам вывести на экран отформатированный текст:
printf используется очень редко, самое популярное применение: преобразовать цену товара в классический вид: рубли.копейки. К примеру:
Если printf используют для вывода очень редко, то вот языковые конструкции print и echo — в каждом коде! Я говорю, что printf функция и значение надо писать в скобках по примеру выше, а вот echo и print — языковые конструкции и текст писать в скобках не надо:
Разница между echo и print есть, хоть смысл у них один и тот же. print может указывать лишь 1 значение, а вот в echo можно перечислять их через запятую:
Не смотря на это всё же можно вывести через один print 2 переменных и делается это с использованием конкатенации:
Конкатенация строк работает следующим образом, она СНАЧАЛА объединяет все в одну большую строку, а уже потом выводит один раз! С другой стороны мы не говорим по очереди «выведи то, выведи сё», мы говорим: у тебя выделено в памяти 1 байт под $x, и 1 байт под $y, объедини $x и $y в памяти и получи ещё одну временную строку в 2 байта (2 символа латинских), и потом выведи и очисти память. В итоге математики уже смогли посчитать. что при конкатенации будет занято уже 4 байта временно на данные, а при перечислении через запятую только 2.
На первый взгляд кажется, что запятая всё же круче в данном случае, но везде повсеместно используют точку. На самом деле ответ очень прост и его подтвердит любой эксперт — нет смысла заморачиваться и экономить на спичках, использование точки считается более классическим и делом привычки многих, и вы никогда в жизни не столкнётесь с тем, что сайт быстрее или медленнее работает из-за точки или запятой. Настоящая производительность сайтов кроется совсем в других вопросах (сложные операции, большой объем данных в Базе Данных)! Поэтому смело используйте то, что Вы уже ранее использовали, переучиваться нет смысла.
По поводу конкатенации стоит заметить самую важную и огромнейшую вещь — её используют для объединения переменной с переменной или строки с переменной, но объединять строку со строкой будет считаться плохим тоном:
Но есть одна маленькая особенность, когда нам необходимо будет использовать двойные кавычки для особой обработки строки (об этом чуть позже), тогда мы применим конкатенацию для строк:
Завершая тему print и echo хотелось бы уточнить ещё второе отличие. print возвращает цифру 1 всегда после завершения выполнения, echo — нет. И вот на этом часто любят строить задачки такого плана для того, чтобы пошевелить мозгами:
И типовая задачка:
И тут Вы спросите, используется ли такое где-то? Ответ — НЕТ, это считается маразмом, и была бы моя воля, я print сделал бы лишь синонимом echo. Не смотря на то, что подобное никто никогда не использует, эта возможность до сих пор остаётся как развлечение для теоретиков.
Какие кавычки правильно использовать для вывода текста в PHP
Я не буду грузить Вам голову маразмом, итак одну вещь рассказал выше. Поэтому давайте сразу перейдем к тому, как правильно делать вывод!
Правило №1 — без кавычек мы пишем числа и переменные:
Правило №2: Одинарные кавычки используем когда хотим вывести в неизменном виде то, что содержится внутри кавычек, а это мы хотим сделать всегда:
Заметьте, что теги отправляются в браузер в неизменном виде, а браузер, в свою очередь, обрабатывает их и выводит как теги, то есть уже отформатированный код. Снова же мы повторяем, что PHP — генерирует HTML, а не текст.
Исключения из правил, когда мы хотим вывести спецсимволы такие как знак больше или меньше, или целый блок HTML, то мы применяем функцию htmlspecialchars:
Правило №3: двойные кавычки применяем, когда хотим вывести обработанную строку, то есть практически никогда. Не смотря на о, что следующий код сможет вывести переменную:
Данный код считается ужасным, банально потому что мы не можем читать наш код и не понимаем его поведение:
Глядя на код выше выведется Friends или FrienBeer ? Это называется не очевидным поведением, а значит в будущем ещё не раз поведение этого кода может быть изменено. Никогда не пишите код так, чтобы нельзя было его сразу быстрым взглядом понять. Правильно было бы:
Но не смотря на это мы двойные кавычки используем в двух случаях, когда нам надо вывести перевод строки (не HTML) либо спецсимвол:
В исходном коде страницы Вы можете увидеть как работает перевод строки \r\n и понять разницу.
Встраиваем вывод из PHP в HTML
PHP — лишь инструмент, способ вставить в HTML какую-то сгенерированную часть данных, поэтому мы используем PHP внутри HTML всегда. Простой вариант:
Указанный выше синтаксис многогранен, внутри конструкции PHP мы можем не только использовать echo, но и любые другие операции включая создание переменных и т.д. и т.п. Но если необходимо ТОЛЬКО вывести переменную или текст одним действием (только одним echo), можно применить сокращенный синтаксис:
Самое интересное, это использовать совмещенный синтаксис для PHP и HTML:
Как вы видите, внутри итерации цикла можно выводить чистый HTML, достаточно закрыть конструкцию PHP и продолжить выводить HTML. Этот способ намного предпочтительнее обычного echo тем, что наш редактор кода IDE PHPStorm подсветит синтаксис кода и упростит разработку сайта.
Статья будет дорабатываться и совершенствоваться. Но даже сейчас я в ней обозначил все основные приёмы вывода текста и переменных в PHP
Источник
Как убрать из переменной часть символов?
Как из переменной со значением $phone=»+375298542323″ убрать +375 или 80
3 ответа 3
Чтобы убрать в начале +375
Чтобы убрать в начале 80
А вот совместить их в одном регулярном выражении у меня пока не получается.
P.S. Может быть вот так
Можно пойти от обратного, зная что в номере телефона нужно «298542323», оставить именно эти цифры путем обреза строки с конца.
Если задача стоит «убрать первые несколько символов из номера телефона в зависимости от формата», тогда
Всё ещё ищете ответ? Посмотрите другие вопросы с метками php или задайте свой вопрос.
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.11.2.40635
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник
Функции для работы со строками
Для получения информации о более сложной обработке строк обратитесь к функциями Perl-совместимых регулярных выражений. Для работы с многобайтовыми кодировками посмотрите на функции по работе с многобайтовыми кодировками.
Содержание
- addcslashes — Экранирует строку слешами в стиле языка C
- addslashes — Экранирует строку с помощью слешей
- bin2hex — Преобразует бинарные данные в шестнадцатеричное представление
- chop — Псевдоним rtrim
- chr — Генерирует односимвольную строку по заданному числу
- chunk_split — Разбивает строку на фрагменты
- convert_cyr_string — Преобразует строку из одной кириллической кодировки в другую
- convert_uudecode — Декодирует строку из формата uuencode в обычный вид
- convert_uuencode — Кодирует строку в формат uuencode
- count_chars — Возвращает информацию о символах, входящих в строку
- crc32 — Вычисляет полином CRC32 для строки
- crypt — Необратимое хеширование строки
- echo — Выводит одну или более строк
- explode — Разбивает строку с помощью разделителя
- fprintf — Записывает отформатированную строку в поток
- get_html_translation_table — Возвращает таблицу преобразований, используемую функциями htmlspecialchars и htmlentities
- hebrev — Преобразует текст на иврите из логической кодировки в визуальную
- hebrevc — Преобразует текст на иврите из логической кодировки в визуальную с преобразованием перевода строки
- hex2bin — Преобразует шестнадцатеричные данные в двоичные
- html_entity_decode — Преобразует HTML-сущности в соответствующие им символы
- htmlentities — Преобразует все возможные символы в соответствующие HTML-сущности
- htmlspecialchars_decode — Преобразует специальные HTML-сущности обратно в соответствующие символы
- htmlspecialchars — Преобразует специальные символы в HTML-сущности
- implode — Объединяет элементы массива в строку
- join — Псевдоним implode
- lcfirst — Преобразует первый символ строки в нижний регистр
- levenshtein — Вычисляет расстояние Левенштейна между двумя строками
- localeconv — Возвращает информацию о форматировании чисел
- ltrim — Удаляет пробелы (или другие символы) из начала строки
- md5_file — Возвращает MD5-хеш файла
- md5 — Возвращает MD5-хеш строки
- metaphone — Возвращает ключ metaphone для строки
- money_format — Форматирует число как денежную величину
- nl_langinfo — Возвращает информацию о языке и локали
- nl2br — Вставляет HTML-код разрыва строки перед каждым переводом строки
- number_format — Форматирует число с разделением групп
- ord — Конвертирует первый байт строки в число от 0 до 255
- parse_str — Разбирает строку в переменные
- print — Выводит строку
- printf — Выводит отформатированную строку
- quoted_printable_decode — Преобразует строку, закодированную методом quoted-printable в 8-битную строку
- quoted_printable_encode — Преобразует 8-битную строку с помощью метода quoted-printable
- quotemeta — Экранирует специальные символы
- rtrim — Удаляет пробелы (или другие символы) из конца строки
- setlocale — Устанавливает настройки локали
- sha1_file — Возвращает SHA1-хеш файла
- sha1 — Возвращает SHA1-хеш строки
- similar_text — Вычисляет степень похожести двух строк
- soundex — Возвращает ключ soundex для строки
- sprintf — Возвращает отформатированную строку
- sscanf — Разбирает строку в соответствии с заданным форматом
- str_contains — Определяет, содержит ли строка заданную подстроку
- str_ends_with — Проверяет, заканчивается ли строка заданной подстрокой
- str_getcsv — Выполняет разбор CSV-строки в массив
- str_ireplace — Регистронезависимый вариант функции str_replace
- str_pad — Дополняет строку другой строкой до заданной длины
- str_repeat — Возвращает повторяющуюся строку
- str_replace — Заменяет все вхождения строки поиска на строку замены
- str_rot13 — Выполняет преобразование ROT13 над строкой
- str_shuffle — Переставляет символы в строке случайным образом
- str_split — Преобразует строку в массив
- str_starts_with — Проверяет, начинается ли строка с заданной подстроки
- str_word_count — Возвращает информацию о словах, входящих в строку
- strcasecmp — Бинарно-безопасное сравнение строк без учёта регистра
- strchr — Псевдоним strstr
- strcmp — Бинарно-безопасное сравнение строк
- strcoll — Сравнение строк с учётом текущей локали
- strcspn — Возвращает длину участка в начале строки, не соответствующего маске
- strip_tags — Удаляет теги HTML и PHP из строки
- stripcslashes — Удаляет экранирование символов, произведённое функцией addcslashes
- stripos — Возвращает позицию первого вхождения подстроки без учёта регистра
- stripslashes — Удаляет экранирование символов
- stristr — Регистронезависимый вариант функции strstr
- strlen — Возвращает длину строки
- strnatcasecmp — Сравнение строк без учёта регистра с использованием алгоритма «natural order»
- strnatcmp — Сравнение строк с использованием алгоритма «natural order»
- strncasecmp — Бинарно-безопасное сравнение первых n символов строк без учёта регистра
- strncmp — Бинарно-безопасное сравнение первых n символов строк
- strpbrk — Ищет в строке любой символ из заданного набора
- strpos — Возвращает позицию первого вхождения подстроки
- strrchr — Находит последнее вхождение символа в строке
- strrev — Переворачивает строку задом наперёд
- strripos — Возвращает позицию последнего вхождения подстроки без учёта регистра
- strrpos — Возвращает позицию последнего вхождения подстроки в строке
- strspn — Возвращает длину участка в начале строки, полностью соответствующего маске
- strstr — Находит первое вхождение подстроки
- strtok — Разбивает строку на токены
- strtolower — Преобразует строку в нижний регистр
- strtoupper — Преобразует строку в верхний регистр
- strtr — Преобразует заданные символы или заменяет подстроки
- substr_compare — Бинарно-безопасное сравнение 2 строк со смещением, с учётом или без учёта регистра
- substr_count — Возвращает число вхождений подстроки
- substr_replace — Заменяет часть строки
- substr — Возвращает подстроку
- trim — Удаляет пробелы (или другие символы) из начала и конца строки
- ucfirst — Преобразует первый символ строки в верхний регистр
- ucwords — Преобразует в верхний регистр первый символ каждого слова в строке
- vfprintf — Записывает отформатированную строку в поток
- vprintf — Выводит отформатированную строку
- vsprintf — Возвращает отформатированную строку
- wordwrap — Переносит строку по указанному количеству символов
User Contributed Notes 24 notes
I’m converting 30 year old code and needed a string TAB function:
//tab function similar to TAB used in old BASIC languages
//though some of them did not truncate if the string were
//longer than the requested position
function tab($instring=»»,$topos=0) <
if(strlen($instring)
In response to hackajar yahoo
No string-to-array function exists because it is not needed. If you reference a string with an offset like you do with an array, the character at that offset will be return. This is documented in section III.11’s «Strings» article under the «String access and modification by character» heading.
I use these little doo-dads quite a bit. I just thought I’d share them and maybe save someone a little time. No biggy. 🙂
// returns true if $str begins with $sub
function beginsWith( $str, $sub ) <
return ( substr( $str, 0, strlen( $sub ) ) == $sub );
>
// return tru if $str ends with $sub
function endsWith( $str, $sub ) <
return ( substr( $str, strlen( $str ) — strlen( $sub ) ) == $sub );
>
// trims off x chars from the front of a string
// or the matching string in $off is trimmed off
function trimOffFront( $off, $str ) <
if( is_numeric( $off ) )
return substr( $str, $off );
else
return substr( $str, strlen( $off ) );
>
// trims off x chars from the end of a string
// or the matching string in $off is trimmed off
function trimOffEnd( $off, $str ) <
if( is_numeric( $off ) )
return substr( $str, 0, strlen( $str ) — $off );
else
return substr( $str, 0, strlen( $str ) — strlen( $off ) );
>
This example lets you parse an unparsed strings variables. Warning: This could cause security leaks if you allow users to pass $variables through this engine. I recommend only using this for your Content Management System.
Just a note in regards to bloopletech a few posts down:
The word «and» should not be used when converting numbers to text. «And» (at least in US English) should only be used to indicate the decimal place.
Example:
1,796,706 => one million, seven hundred ninety-six thousand, seven hundred six.
594,359.34 => five hundred ninety four thousand, three hundred fifty nine and thirty four hundredths
/*
* str_match
*
* return a string with only cacacteres defined in a expression return false if the expression is not valid
*
* @param $str string the string
* @param $match the expression based on the class definition off a PCRE regular expression.
* the ‘[‘, ‘]’, ‘\’ and ‘^’ at class start need to be escaped.
* like : -a-z0-9_@.
*/
function str_match ( $str , $match )
<
$return = » ;
if( eregi ( ‘(.*)’ , $match , $class ) )
<
$match = ‘[‘ . $regs [ 1 ]. ‘]’ ;
for( $i = 0 ; $i strlen ( $str ); $i ++ )
if( ereg ( ‘[‘ . $class [ 1 ]. ‘]’ , $str [ $i ] ) )
$return .= $str < $i >;
return $return ;
>
else return false ;
>
/*
* example
* accept only alphanum caracteres from the GET/POST parameters ‘a’
*/
if( ! empty( $_REQUEST [ ‘a’ ]) )
$_REQUEST [ ‘a’ ] = str_match ( $_REQUEST [ ‘a’ ], ‘a-zA-Z0-9’ );
else
$_REQUEST [ ‘a’ ] = ‘default’ ;
?>
/**
Utility class: static methods for cleaning & escaping untrusted (i.e.
user-supplied) strings.
Any string can (usually) be thought of as being in one of these ‘modes’:
pure = what the user actually typed / what you want to see on the page /
what is actually stored in the DB
gpc = incoming GET, POST or COOKIE data
sql = escaped for passing safely to RDBMS via SQL (also, data from DB
queries and file reads if you have magic_quotes_runtime on—which
is rare)
html = safe for html display (htmlentities applied)
Always knowing what mode your string is in—using these methods to
convert between modes—will prevent SQL injection and cross-site scripting.
This class refers to its own namespace (so it can work in PHP 4—there is no
self keyword until PHP 5). Do not change the name of the class w/o changing
all the internal references.
Example usage: a POST value that you want to query with:
$username = Str::gpc2sql($_POST[‘username’]);
*/
//This sets SQL escaping to use slashes; for Sybase(/MSSQL)-style escaping
// ( ‘ —> » ), set to true.
define ( ‘STR_SYBASE’ , false );
class Str <
function gpc2sql ( $gpc , $maxLength = false )
<
return Str :: pure2sql ( Str :: gpc2pure ( $gpc ), $maxLength );
>
function gpc2html ( $gpc , $maxLength = false )
<
return Str :: pure2html ( Str :: gpc2pure ( $gpc ), $maxLength );
>
function gpc2pure ( $gpc )
<
if ( ini_get ( ‘magic_quotes_sybase’ ))
$pure = str_replace ( «»» , «‘» , $gpc );
else $pure = get_magic_quotes_gpc () ? stripslashes ( $gpc ) : $gpc ;
return $pure ;
>
function html2pure ( $html )
<
return html_entity_decode ( $html );
>
function html2sql ( $html , $maxLength = false )
<
return Str :: pure2sql ( Str :: html2pure ( $html ), $maxLength );
>
function pure2html ( $pure , $maxLength = false )
<
return $maxLength ? htmlentities ( substr ( $pure , 0 , $maxLength ))
: htmlentities ( $pure );
>
function pure2sql ( $pure , $maxLength = false )
<
if ( $maxLength ) $pure = substr ( $pure , 0 , $maxLength );
return ( STR_SYBASE )
? str_replace ( «‘» , «»» , $pure )
: addslashes ( $pure );
>
function sql2html ( $sql , $maxLength = false )
<
$pure = Str :: sql2pure ( $sql );
if ( $maxLength ) $pure = substr ( $pure , 0 , $maxLength );
return Str :: pure2html ( $pure );
>
function sql2pure ( $sql )
<
return ( STR_SYBASE )
? str_replace ( «»» , «‘» , $sql )
: stripslashes ( $sql );
>
>
?>
Example: Give me everything up to the fourth occurance of ‘/’.
function strnpos ( $haystack , $needle , $occurance , $pos = 0 ) <
$res = implode ( $needle , $haystack );
$res = array_slice ( $res , $pos , $occurance );
return explode ( $needle , $res );
>
?>
to: james dot d dot baker at gmail dot com
PHP has a builtin function for doing what your function does,
//
// string strtrmvistl( string str, [int maxlen = 64],
// [bool right_justify = false],
// [string delimter = «
\n»])
//
// splits a long string into two chunks (a start and an end chunk)
// of a given maximum length and seperates them by a given delimeter.
// a second chunk can be right-justified within maxlen.
// may be used to ‘spread’ a string over two lines.
//
function strtrmvistl($str, $maxlen = 64, $right_justify = false, $delimter = «
\n») <
if(($len = strlen($str = chop($str))) > ($maxlen = max($maxlen, 12))) <
$newstr = substr($str, 0, $maxlen — 3);
if($len > ($maxlen — 3)) <
$endlen = min(($len — strlen($newstr)), $maxlen — 3);
$newstr .= «. » . $delimter;
if($right_justify)
$newstr .= str_pad(», $maxlen — $endlen — 3, ‘ ‘);
$newstr .= «. » . substr($str, $len — $endlen);
>
I really searched for a function that would do this as I’ve seen it in other languages but I couldn’t find it here. This is particularily useful when combined with substr() to take the first part of a string up to a certain point.
strnpos() — Find the nth position of needle in haystack.
function strnpos ( $haystack , $needle , $occurance , $pos = 0 ) <
for ( $i = 1 ; $i $occurance ; $i ++) <
$pos = strpos ( $haystack , $needle , $pos ) + 1 ;
>
return $pos — 1 ;
?>
Example: Give me everything up to the fourth occurance of ‘/’.
$root_dir = substr ( $haystack , 0 , strnpos ( $haystack , $needle , 4 ));
Use this example with the server variable $_SERVER[‘SCRIPT_NAME’] as the haystack and you can self-discover a document’s root directory for the purposes of locating global files automatically!
The functions below:
function beginsWith( $str, $sub )
function endsWith( $str, $sub )
Are correct, but flawed. You’d need to use the === operator instead:
function beginsWith( $str, $sub ) <
return ( substr( $str, 0, strlen( $sub ) ) === $sub );
>
function endsWith( $str, $sub ) <
return ( substr( $str, strlen( $str ) — strlen( $sub ) ) === $sub );
>
Otherwise, endsWith would return «foobar.0» ends with «.0» as well as «0» or «00» or any amount of zeros because numerically .0 does equal 0.
Here’s a simpler «simplest» way to toggle through a set of 1..n colors for web backgrounds:
= array( ‘#000000’ , ‘#808080’ , ‘#A0A0A0’ , ‘#FFFFFF’ );
// Get a colour
$color = next ( $colors ) or $color = reset ( $colors );
?>
The code doesn’t need to know anything about the number of elements being cycled through. That way you won’t have to tracking down all the code when changing the number of colors or the color values.
Here’s an easier way to find nth.
there is is no need to check if the user has entered a non-integer as we may be using this function for expressing variables as well eg. ith value of x , nth root of z ,etc.
I was looking for a function to find the common substring in 2 different strings. I tried both the mb_string_intersect and string_intersect functions listed here but didn’t work for me. I found the algorithm at http://en.wikibooks.org/wiki/Algorithm_implementation/Strings/Longest_common_substring#PHP so here I post you the function
/**
* Finds the matching string between 2 strings
*
* @param string $string1
* @param string $string2
* @param number $minChars
*
* @return NULL|string
*
* @link http://en.wikibooks.org/wiki/Algorithm_implementation/Strings/Longest_common_substring#PHP
*/
function string_intersect ( $string_1 , $string_2 )
<
$string_1_length = strlen ( $string_1 );
$string_2_length = strlen ( $string_2 );
$return = «» ;
if ( $string_1_length === 0 || $string_2_length === 0 ) <
// No similarities
return $return ;
>
// Initialize the CSL array to assume there are no similarities
for ( $i = 0 ; $i $string_1_length ; $i ++) <
$longest_common_subsequence [ $i ] = array();
for ( $j = 0 ; $j $string_2_length ; $j ++) <
$longest_common_subsequence [ $i ][ $j ] = 0 ;
>
>
for ( $i = 0 ; $i $string_1_length ; $i ++) <
for ( $j = 0 ; $j $string_2_length ; $j ++) <
// Check every combination of characters
if ( $string_1 [ $i ] === $string_2 [ $j ]) <
// These are the same in both strings
if ( $i === 0 || $j === 0 ) <
// It’s the first character, so it’s clearly only 1 character long
$longest_common_subsequence [ $i ][ $j ] = 1 ;
> else <
// It’s one character longer than the string from the previous character
$longest_common_subsequence [ $i ][ $j ] = $longest_common_subsequence [ $i — 1 ][ $j — 1 ] + 1 ;
>
if ( $longest_common_subsequence [ $i ][ $j ] > $largest_size ) <
// Remember this as the largest
$largest_size = $longest_common_subsequence [ $i ][ $j ];
// Wipe any previous results
$return = «» ;
// And then fall through to remember this new value
>
if ( $longest_common_subsequence [ $i ][ $j ] === $largest_size ) <
// Remember the largest string(s)
$return = substr ( $string_1 , $i — $largest_size + 1 , $largest_size );
>
>
// Else, $CSL should be set to 0, which it was already initialized to
>
>
// Return the list of matches
return $return ;
>
stripos for PHP4.x
function stripos ( $haystack , $needle ) <
return strpos ( strtoupper ( $haystack ), strtoupper ( $needle ));
>
?>
A comprehensive concatenation function, that works with array and strings
function str_cat () <
$args = func_get_args () ;
// Asserts that every array given as argument is $dim-size.
// Keys in arrays are stripped off.
// If no array is found, $dim stays unset.
foreach( $args as $key => $arg ) <
if( is_array ( $arg )) <
if(!isset( $dim ))
$dim = count ( $arg ) ;
elseif( $dim != count ( $arg ))
return FALSE ;
$args [ $key ] = array_values ( $arg ) ;
>
>
// Concatenation
if(isset( $dim )) <
$result = array() ;
for( $i = 0 ; $i $dim ; $i ++) <
$result [ $i ] = » ;
foreach( $args as $arg )
$result [ $i ] .= ( is_array ( $arg ) ? $arg [ $i ] : $arg ) ;
>
return $result ;
> else <
return implode ( $args ) ;
>
>
?>
A simple example :
(array( 1 , 2 , 3 ), ‘-‘ , array( ‘foo’ => ‘foo’ , ‘bar’ => ‘bar’ , ‘noop’ => ‘noop’ )) ;
?>
will return :
Array (
[0] => 1-foo
[1] => 2-bar
[2] => 3-noop
)
= $_GET ; // retrieving previous $_GET values
$myget [ ‘foo’ ] = ‘b a r’ ; // changing one value
$myget = str_cat ( array_keys ( $myget ), ‘=’ , array_map ( ‘rawurlencode’ , array_values ( $myget ))) ;
$querystring = implode ( ini_get ( ‘arg_separator.output’ ), $myget )) ;
?>
will return a valid querystring with some values changed.
Note that ( ‘foo’ , ‘&’ , ‘bar’ ) ; ?> will return ‘foo&bar’, while (array( ‘foo’ ), ‘&’ , ‘bar’ ) ; ?> will return array(0 => foo&bar)
Here is a truly random string generator it uses the most common string functions it will work on anywhere.
function random_string ( $max = 20 ) <
$chars = explode ( » » , «a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9» );
for( $i = 0 ; $i $max ; $i ++) <
$rnd = array_rand ( $chars );
$rtn .= base64_encode ( md5 ( $chars [ $rnd ]));
>
return substr ( str_shuffle ( strtolower ( $rtn )), 0 , $max );
>
?>
Regarding the code for the function beginsWith($str, $sub), I found that it has problems when only one character is present after the string searched for. I found that this works better instead:
function beginsWith ( $str , $sub ) <
return ( strncmp ( $str , $sub , strlen ( $sub )) == 0 );
>
?>
/*
Written By James Baker, May 27th 2005
sentenceCase($string);
$string: The string to convert to sentence case.
Converts a string into proper sentence case (First letter of each sentance capital, all the others smaller)
Example Usage:
echo sentenceCase(«HELLO WORLD. THIS IS A CAPITALISED SENTENCE. this isn’t.»);
Returns:
Hello world. This is a capitalised sentence. This isn’t.
*/
function sentenceCase ( $s ) <
$str = strtolower ( $s );
$cap = true ;
for( $x = 0 ; $x strlen ( $str ); $x ++) <
$letter = substr ( $str , $x , 1 );
if( $letter == «.» || $letter == «!» || $letter == «?» ) <
$cap = true ;
>elseif( $letter != » » && $cap == true ) <
$letter = strtoupper ( $letter );
$cap = false ;
>
If you want a function to return all text in a string up to the Nth occurrence of a substring, try the below function.
Works in PHP >= 5.
(Pommef provided another sample function for this purpose below, but I believe it is incorrect.)
// Returns all of $haystack up to (but excluding) the $n_occurrence occurrence of $needle. Therefore:
// If there are = $n_occurrence occurrences of $needle in $haystack, the returned string will end before the $n_occurrence’th needle.
// This function only makes sense for $n_occurrence >= 1
function nsubstr ( $needle , $haystack , $n_occurrence )
<
// After exploding by $needle, every entry in $arr except (possibly) part of the last entry should have its content returned.
$arr = explode ( $needle , $haystack , $n_occurrence );
// Examine last entry in $arr. If it contains $needle, cut out all text except for the text before $needle.
$last = count ( $arr ) — 1 ;
$pos_in_last = strpos ( $arr [ $last ], $needle );
if ( $pos_in_last !== false )
$arr [ $last ] = substr ( $arr [ $last ], 0 , $pos_in_last );
return implode ( $needle , $arr );
>
print ‘S: ‘ . $string . ‘
‘ ;
print ‘1: ‘ . nsubstr ( ’24’ , $string , 1 ) . ‘
‘ ;
print ‘2: ‘ . nsubstr ( ’24’ , $string , 2 ) . ‘
‘ ;
print ‘3: ‘ . nsubstr ( ’24’ , $string , 3 ) . ‘
‘ ;
print ‘4: ‘ . nsubstr ( ’24’ , $string , 4 ) . ‘
‘ ;
print ‘5: ‘ . nsubstr ( ’24’ , $string , 5 ) . ‘
‘ ;
print ‘6: ‘ . nsubstr ( ’24’ , $string , 6 ) . ‘
‘ ;
print ‘7: ‘ . nsubstr ( ’24’ , $string , 7 ) . ‘
‘ ;
/*
// prints:
S: d24jkdslgjldk2424jgklsjg24jskgldjk24
1: d
2: d24jkdslgjldk
3: d24jkdslgjldk24
4: d24jkdslgjldk2424jgklsjg
5: d24jkdslgjldk2424jgklsjg24jskgldjk
6: d24jkdslgjldk2424jgklsjg24jskgldjk24
7: d24jkdslgjldk2424jgklsjg24jskgldjk24
*/
?>
Note that this function can be combined with wordwrap() to accomplish a routine but fairly difficult web design goal, namely, limiting inline HTML text to a certain number of lines. wordwrap() can break your string using
, and then you can use this function to only return text up to the N’th
.
You will still have to make a conservative guess of the max number of characters per line with wordwrap(), but you can be more precise than if you were simply truncating a multiple-line string with substr().
= ‘Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque id massa. Duis sollicitudin ipsum vel diam. Aliquam pulvinar sagittis felis. Nullam hendrerit semper elit. Donec convallis mollis risus. Cras blandit mollis turpis. Vivamus facilisis, sapien at tincidunt accumsan, arcu dolor suscipit sem, tristique convallis ante ante id diam. Curabitur mollis, lacus vel gravida accumsan, enim quam condimentum est, vitae rutrum neque magna ac enim.’ ;
$wrapped_text = wordwrap ( $text , 100 , ‘
‘ , true );
$three_lines = nsubstr ( ‘
‘ , $wrapped_text , 3 );
$four_lines = nsubstr ( ‘
‘ , $wrapped_text , 4 );
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque id massa. Duis sollicitudin
ipsum vel diam. Aliquam pulvinar sagittis felis. Nullam hendrerit semper elit. Donec convallis
mollis risus. Cras blandit mollis turpis. Vivamus facilisis, sapien at tincidunt accumsan, arcu
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque id massa. Duis sollicitudin
ipsum vel diam. Aliquam pulvinar sagittis felis. Nullam hendrerit semper elit. Donec convallis
mollis risus. Cras blandit mollis turpis. Vivamus facilisis, sapien at tincidunt accumsan, arcu
dolor suscipit sem, tristique convallis ante ante id diam. Curabitur mollis, lacus vel gravida
I’ve prepared this simple function to obtain a string delimited between tags (not only XML tags!). Anybody needs something like this?.
function get_string_between ( $string , $start , $end ) <
$string = » » . $string ;
$ini = strpos ( $string , $start );
if ( $ini == 0 ) return «» ;
$ini += strlen ( $start );
$len = strpos ( $string , $end , $ini ) — $ini ;
return substr ( $string , $ini , $len );
>
$string = «this [custom] function is useless!!» ;
echo get_string_between ( $string , «[» , «]» );
// must return «custom»;
?>
more functions at http://www.sphoera.com
Get the intersection of two strings using array_intersect
function string_intersect ( $string1 , $string2 )
<
$array1 = $array2 = array();
for( $i = 0 , $j = 0 , $s1_len = strlen ( $string1 ), $s2_len = strlen ( $string2 );( $i $s1_len ) || ( $j $s2_len ); $i ++, $j ++) <
if( $i $s1_len ) <
$array1 [] = $string1 [ $i ];
>
if( $j $s2_len ) <
$array2 [] = $string2 [ $j ];
>
>
return implode ( » , array_intersect ( $array1 , $array2 ));
>
?>
For more advanced comparison you can use array_uintersect as well.
Источник