Комментарии к заданию
Результирующая строка получится, если сцепить подстроки исходной строки. Чтоб определить какие подстроки потребуются для решения задачи, надо составить схему строки и указать подстроки, номера начальных и конечных позиций, для поиска которых использовать функцию strpos. Все номера должны входить в число допустимых номеров, в частности, не должны превышать длину строки. Рекомендуется при отладке выводить значения найденных номеров позиций.
В начале исполнения программы значения символьных переменных не определены, функция isset позволяет проверить существование переменной. Длина строки $str без пробелов strlen( trim($str) ).
Программы следует набирать только в редакторе, работающем в коде ASCII. Сохранять программы следует в своем каталоге с именами ФИОlab8.php и ФИОlab8.html. Локальное выполнение программ возможно только из каталога документов web - сервера D:\WebServers\home\localhost\www\. Перед выполнением следует скопировать программы в этот каталог, а после выполнения удалить их оттуда. Начинать работу следует с запуска программы Run.exe, заканчивать запуском программы Stop.exe. Обе программы находятся в каталоге D:\WebServers\etc. Рекомендуется создать соответствующие этикетки на рабочем столе. Адрес для запуска PHP программы выглядит следующим образом
http://localhost/ФИОlab8.php
После отладки PHP – скрипта запустить HTML программу
http://localhost/ФИОlab8.html
Пример
В исходной строке длиной не более 70 символов находится предложение, состоящее не менее чем из двух слов. Сформировать новую строку, в которой из последнего слова предложения удалена первая буква.
|
Схема строки $str |
N1 – номер позиции последнего пробела в предложении (но не в строке); NEnd – количество символов в предложении. Подстроки: S1=strin(0 : N1) – включает пробел; S2=strin(N1+2 : Nend-1) – начинается со второй буквы последнего слова. |
|
S1 S2 слово1 слово2 слово3. ↑ ↑ N1 Nend |
Из задания следует, что длина результирующей строки на 1 меньше исходной. Новая строка создается из двух подстрок S1 и S2 исходной строки, которые формируются по позициям N1 и NEnd. Все действия выполняют со строкой с удаленными начальными и конечными пробелами - NEnd вычисляют после применения trim. Последний пробел (N1) между словами станет первым, если просматривать предложение справа налево.
Программы
<?php
if (!isset($strin)):
$strin = "Word1 word2 word3."; //для отладки без ввода
endif;
echo $strin,"<BR>";
$str = trim($strin); // только предложение
$Nend = strlen($str); // длина предложения
$N1 = strrpos($str, " "); //позиция последнего пробела
$lengthword= ($Nend - 1) - $N1; //длина последнего слова
$strout = substr($str, 0, $N1+ 1) . substr($str, -($lengthword - 1));
//$p1 = substr($str, 0, $N1+ 1);// вычисление и
//echo $N1," p1=", $p1,"<BR>"; // печать для отладки
//$p2 = substr($str, -($lengthword - 1));// вычисление и
//echo $lengthword, " p2=", $p2,"<BR>"; // печать для отладки
echo "В последнем слове предложения удалить первую букву<br>";
echo "<font face='courier new' size='5'>$strout</font> <br>";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title> пример HTML - формы </title></head>
<body>
<center>
<form action="lab8.php" method="POST">
Задание: <strong><font size="+1" color="#0000FF">Вариант задания </font></strong><br>
<div align="left"><input type="RESET" value="Стереть"></div>
СТРОКА <input type="text" name="strin" size="70"><br>
<input type="SUBMIT" value="отРедактировать">
</form>
</center>
</body>
</html>
