Възможността да манипулираме и оперираме с текстови низове е много полезна страна на езика. Целта на това упражнение е да представи основните функции на PHP за работа с стрингове. Вниманието ще бъде насочено най-вече към функциите за търсене и замяня в текстове, за премахване на интервалите в текстта и функциите за форматно извеждане на текстта.
-
Търсене на данни в стринг с функция strpos
string strpos(string haystack, string needle[, int offset])
Тази функция връща позицията в стринга haystack, в която се намира търсения текст needle, незадължителния параметър offset показва позицията, от която тябва да започне търсенето. Ако функцията не намери стинга, връща false.
Пример1: Нека в последователността от числа намерим цифрата 5.
$numberedString = "1234567890";
$fivePos = strpos($numberedString, "5");
echo "Позицията на 5 във текстта е ”.$fivePos;
Резултатът:
Позицията на 5 във текстта е 4
Обърнете внимание, че броенето на позициите започва от 0. Освен това, ако търсения текст съдържаше повече от един символ "567890", пак резултата щеше да бъде 4, азщото това е позицията от която започва търсения низ.
Пример2. Да намерим всички позиции, където се среща определен текст в текстов низ
За да се реши този проблем функцията strpos има трети аргумент, който определя от къде ще започне следващото търсене. Ако съхраните позицията на последно срещнатия текст и към нея прибавите +1, срещнатия текст ще бъде прескочен и така ще бъде намерен следващия.
$numberedString = "1234567890123456789012345678901234567890";
$fivePos = strpos($numberedString, "5");
echo "The position of 5 in our string was $fivePos";
$fivePos2 = strpos($numberedString, "5", $fivePos + 1);
echo "
The position of the second 5 was $fivePos2";
Резултат:
The position of 5 in our string was 4
The position of the second 5 was 14
Задача 1. Намерете всички позиции, където се среща числото 5 в текстовия низ 1234567890123456789012345678901234567890.
Примерен код:
$numberedString = "1234567890123456789012345678901234567890";
$offset = 0; // initial offset is 0
$fiveCounter = 0;
// First check if there is a "5" at position 0.
if(strpos($numberedString, "5") == 0){
$fiveCounter++;
echo "
Five #$fiveCounter is at position - 0";
}
// Check the rest of the string for 5's
while($offset = strpos($numberedString, "5", $offset + 1)){
$fiveCounter++;
echo "
Five #$fiveCounter is at position - $offset";
}
На екрана ще се изпише:
Five #1 is at position - 4
Five #2 is at position - 14
Five #3 is at position - 24
Five #4 is at position - 34
Задача: Напишете код на PHP, който да проверява дали е въведен правилно e-mail адрес.
Решение:
$x="";
if(isset($_POST["T1"]))$x=$_POST["T1"];
?>
if(isset($_POST["T1"])){
$x=$_POST["T1"];
$flag=TRUE;
if(strlen($x)<6)$flag=FALSE; //d@h.bd
elseif(($n=strpos($x,"@"))==0)$flag=FALSE;
elseif(($n2=strpos($x,".",$n))===FALSE)$flag=FALSE;
elseif($n2<$n+2)$flag=FALSE; //One symbol between "@" and "."
elseif(strlen($x)<$n2+2)$flag=FALSE; //At least two symbols after "."
if($flag)echo "Valid e-mail address";
else echo "Invalid e-mail address";
}
?>
Сподели с приятели: |