С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 6

Работа с массивами

22.09.2015, 10:10. Показов 715. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Помогите пожалуйста советом, а то сил больше нет искать и спросить не у кого.

надо с файла test.txt взять новость и положить ее в другой документ test2.txt, но проблема в том, что я не могу правильно ее обрезать от ключа news01 до ключа end01(я могу обозначать новость специальными словами, так как обрезать по тексту это наверное полная жесть). Новости бывают разной длины и разной последовательности.
Это пример, на что хватило ума, больше не нашел.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<? $parts = array( 'news01', 'news02');
 
$end = array ('end01', 'end02');
 
$news = file("test.txt");
 
for($i = 0; $i <= count($news); $i++) 
{
    for ($j = 0; $j <= count($parts); $j++)
    
 
 
    if (strripos($news[$i], $parts[$j])) 
  {
    echo "Строка <b>{$i}</b> : " . htmlspecialchars($news[$i]) . "<br />\n";
  }
}
    for($i = 0; $i <= count($news); $i++) {
    
    for ($k = 0; $k <= count ($end); $k++)
    
    if (strripos($news[$i], $end[$k])) 
  {
    echo "Строка <b>{$i}</b> : " . htmlspecialchars($news[$i]) . "<br />\n";
  }
}
выводит на экран

HTML5
1
2
3
4
Строка 3590 : lang=UK style='mso-ansi-language:UK'>news01<span style='mso-no-proof:
Строка 3643 : style='mso-no-proof:yes'>news02<o:p></o:p></span></p>
Строка 3622 : end01 
Строка 3688 : end02

Сама новость, что я бы хотел ее видеть из огромного текста


style='mso-ansi-language:UK;mso-no-proof:yes'>news01<o></o></span></p>
</td>
<td width=214 valign=top style='width:160.2pt;border:solid windowtext 1.0pt;
border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
style='font-size:24.0pt'>Акция<o></o></span></b></p>
</td>
<td width=664 valign=top style='width:497.8pt;border:solid windowtext 1.0pt;
border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span class=SpellE><span
lang=UK style='font-size:24.0pt;mso-ansi-language:UK'>сегодня</span></span><span
lang=UK style='font-size:24.0pt;mso-ansi-language:UK'> 21 09 2015 року<o></o></span></p>
<p class=MsoNormal><span style='font-size:24.0pt'>&quot;Мы будем работать
с&nbsp;новым греческим правительством, разумеется, это предложение
сохраняется с&nbsp;нашей стороны&quot;,&nbsp;— сказал <span class=SpellE>Зайберт</span>
журналистам в&nbsp;Берлине в&nbsp;понедельник. По его словам, комментировать
что-то конкретное пока рано, необходимо вначале дождаться формирования этого
нового правительства. Что же касается результатов воскресных выборов, то,
по&nbsp;словам <span class=SpellE>Зайберта</span>, правительство ФРГ обычно
их не&nbsp;комментирует. end01<o></o></span></p>

И вложить этот текст в файл test2.txt между ключами news01 end02. HTML теги остаются.
Спасибо всем кто поможет, хоть каким либо советом!

Добавлено через 19 часов 43 минуты
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$parts = array( 'news01', 'news02', 'end01', 'end02');
 
$news = file("test.txt");
 
for($i = 0; $i <= count($news); $i++) 
{
    for ($j = 0; $j <= count($parts); $j++)
    
 
 
    if (strripos($news[$i], $parts[$j])) 
  {
    echo "Строка <b>{$i}</b> : " . htmlspecialchars($news[$i]) . "<br />\n";
  }
}
Вот укороченный код, в первом явно много лишнего. Подскажите хоть направление поиска, буду очень благодарен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.09.2015, 10:10
Ответы с готовыми решениями:

Работа с массивами
Подскажите пожалуйста, что значит &quot;**&quot; в данной строке? void Array(int ** array, int size); Спасибо!

работа с массивами
Не могу понять, как в mathcad переписать двумерный массив(матрицу) в одмерный?!

Работа с массивами
Ребят, помогите с логикой. В массиве находится неопределенное количество слов, скажем, разные виды хобби. Пользователь может...

10
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
22.09.2015, 12:02
Зачем вам этот геморрой?

PHP
1
2
3
4
5
6
$str = 'start01Какой-то текстend01';
$start = strpos($str, 'start01') + 7; // во фразе "start01" 7 символов, поэтому смещаем стартовую позицию на 7
$end = strpos($str, 'end01'); // позиция окончания строки
 
$new_str = substr($str, $start, $end - $start);
echo $new_str;
1
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 6
22.09.2015, 13:03  [ТС]
Добавлено через 47 секунд
Геморрой в том, что надо вывести это на экран, поддержка HTML нужна для корректного отображения текста (выделения, косая, шрифт, размер шрифта).
Задачка стоит в том, что документа ворд конвертирую в HTML и с таблички сообщений надо вырезать отдельные новости, потом внести их файл, что отвечает за вывод на экран
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
22.09.2015, 13:14
sadamss, ничего не понял. Можно подробней?
1
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 6
22.09.2015, 13:43  [ТС]
Есть файл в worde Test.doc. В этот файл записываем с интернета новости в табличку. Новости идут с значением (начало news01 и конец новости end01 и так далее, их много будет). Далее Test.doc мы конвертируем (сохранить как в HTML) и получаем уже наши новости с поддержкой HTML файл Test.htm. Потом, я, хотел бы взять эти новости с файла Test.htm от news01 до end01 и news02 до end02 и так далее (я придумал эти названия для того, чтобы обрезать новость от лишнего хлама, что создается после конвертации файла Test.doc в Test.htm), поместить их в специальную форму в такие же места news01 и end01 (можно другие названия), потом этот файл будет отображать эти новости через браузер в красивом виде. Каждая новость будет в специальной форме и красиво отображаться. Сейчас я это делаю в ручную, а хотелось бы ускорить этот процесс. Спасибо, что помогаете!

Добавлено через 6 минут
Вот немного подсказали вариант, но докрутить не получается

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$result = array ();
 
$parts = array( 'news01', 'news02');
 
$end = array ('end01', 'end02');
 
$news = file("test.htm");
 
for($i = 0; $i <= count($news); $i++) 
{
    for ($j = 0; $j <= 4; $j++)
    {
    if (strripos($news[$i], $parts[$j])) 
        do {
            $result [$j] = $news [i + 1];
            }
            while $result($news[$i], $end[$j]);
    }
}
    echo "<pre>";
    var_dump ($result);
    echo "</pre>";
0
32 / 31 / 10
Регистрация: 26.11.2013
Сообщений: 93
22.09.2015, 13:49
ключевая фраза:
Цитата Сообщение от sadamss Посмотреть сообщение
обрезать новость от лишнего хлама, что создается после конвертации файла Test.doc в Test.htm
придумайте другое решение, без ворда.
весь вордовский хлам никогда не порежете.
1
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 6
22.09.2015, 15:48  [ТС]
я буду резать от строки, что содержит news01 до конца новости end01. Весь хлам меня не волнует, есть точка начала и точка конца сообщения, я думал так получится.

Вроде должно получится но выдает ошибку
Parse error: syntax error, unexpected T_VARIABLE, expecting '(' in Z:\denwer\www\denwer\index.php on line 20

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$result = array ();
 
$parts = array( 'news01', 'news02');
 
$end = array ('end01', 'end02');
 
$news = file("test.htm");
 
for($i = 0; $i <= count($news); $i++) 
{
    for ($j = 0; $j <= 4; $j++)
    {
    if (strripos($news[$i], $parts[$j])) 
        do {
            $result [$j] = $news [i + 1];
            }
            while $result($news[$i], $end[$j]);
    }
}
    echo "<pre>";
    var_dump ($result);
    echo "</pre>";
Добавлено через 1 час 45 минут
Блин, исправил ошибку, теперь такая хрень ((
Fatal error: Function name must be a string in Z:\denwer\www\denwer\index.php on line 20

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$result = array ();
 
$parts = array( 'news01', 'news02');
 
$end = array ('end01', 'end02');
 
$news = file("test.htm");
 
for($i = 0; $i <= count($news); $i++) 
{
    for ($j = 0; $j <= 4; $j++)
    {
    if (strripos($news[$i], $parts[$j])) 
        do {
            $result [$j] = $news [i + 1];
            }
            while ($result($news[$i], $end[$j]));
    }
}
    echo "<pre>";
    var_dump ($result);
    echo "</pre>";
0
 Аватар для autumn
29 / 29 / 14
Регистрация: 23.10.2014
Сообщений: 79
22.09.2015, 16:36
а это что
PHP
1
$result($news[$i], $end[$j])
1
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 6
22.09.2015, 16:58  [ТС]
Точно, спасибо.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$result = array ();
 
$parts = array( 'news01', 'news02');
 
$end = array ('end01', 'end02');
 
$news = file("test.htm");
 
for($i = 0; $i <= count($news); $i++) 
{
    for ($j = 0; $j <= 4; $j++)
    {
    if (strripos($news[$i], $parts[$j])) 
        do {
            $result [$j] = $news [i + 1];
            }
            while (strripos($news[$i], $end[$j]));
    }
}
    echo "<pre>";
    var_dump ($result);
    echo "</pre>";
Результат

HTML5
1
2
3
4
5
6
7
8
array(2) {
  [0]=>
  string(51) "xmlns:o="urn:schemas-microsoft-com:office:office"
"
  [1]=>
  string(51) "xmlns:o="urn:schemas-microsoft-com:office:office"
"
}
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
22.09.2015, 19:05
sadamss, не понимаю, зачем это вам, почему нельзя хранить данные в БД и сделать простенький редактор.
1
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 6
23.09.2015, 11:54  [ТС]
Проблема в том, что с БД еще не умею работать ((, пробую хоть такой вариант как временное решение. Его на сегодняшний день хватит. Просто есть такая программа как Sasplanet, я хочу сделать автоматическое отображение меток на этой карте, там есть поддержка HTML кода. У меня будет автоматически записываться в метки новости и отображаться. Пока только с помощью PHP решил реализовать эту задумку.

Если кто может помогите с второй частью задачи

Первую часть уже сделал, отрезает как надо, осталось правильно вложить в другой файл.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$parts = array( 0 => 'news01', 1 =>'news02');
 
$end = array (0 =>'end01', 1 =>'end02');
 
$news = file("test.htm");
 
$result = array ();
 
$k = 0;
$l = 0;
 
for($i = 0; $i <= count($news); $i++){
    
    for ($j = 0; $j <= count ($parts); $j++){
    
        if (strpos ($news[$i], $parts[$j])) {
            echo $i . "- begin" . "<br>";
            $k = $i;
            }
        if (strpos ($news[$i], $end[$j]))   {
            echo $i . "- end" . "<br>";
            $l = $i;
            $result = array_slice ($news, $k, $l - $k);
            var_dump ($result);
            echo "<br>";
            }
    }
}
Результат

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
6207- begin
6228- end
array(21) { [0]=> string(78) " style='mso-ansi-language:UK;mso-no-proof:yes'>news01
 
" [1]=> string(9) " " [2]=> string(80) " " [5]=> string(67) "
 
string(60) " style='font-size:24.0pt'>Акция
" [7]=> string(9) " " [8]=> string(80) " " [11]=> string(84) "
 
string(84) " lang=UK style='font-size:24.0pt;mso-ansi-language:UK'>сегодня string(96) " lang=UK style='font-size:24.0pt;mso-ansi-language:UK'> 21 09 2015 року
" [14]=> string(77) "
 
"Мы будем работать " [15]=> string(70) " с новым греческим правительством, разумеется, это предложение " [16]=> string(91) " сохраняется с нашей стороны", — сказал Зайберт " [17]=> string(80) " журналистам в Берлине в понедельник. По его словам, комментировать " [18]=> string(80) " что-то конкретное пока рано, необходимо вначале дождаться формирования этого " [19]=> string(77) " нового правительства. Что же касается результатов воскресных выборов, то, " [20]=> string(79) " по словам Зайберта, правительство ФРГ обычно " }
6236- begin
6262- end
array(26) { [0]=> string(57) " style='mso-no-proof:yes'>news02
" [1]=> string(9) " " [2]=> string(78) " " [6]=> string(67) "
 
string(89) " style='font-size:24.0pt'>Акция string(84) " lang=UK style='font-size:24.0pt;mso-ansi-language:UK'>
" [9]=> string(9) " " [10]=> string(78) " " [14]=> string(84) "
 
string(84) " lang=UK style='font-size:24.0pt;mso-ansi-language:UK'>сегодня string(86) " lang=UK style='font-size:24.0pt;mso-ansi-language:UK'> 21 09 2015 року string(98) " lang=UK style='font-size:24.0pt'>
" [18]=> string(81) "
 
В Греции в воскресенье " [19]=> string(78) " прошли досрочные парламентские выборы. По итогам обработки 95% протоколов, " [20]=> string(74) " СИРИЗА Ципраса набирает 35,47% (145 кресел), " [21]=> string(76) " правоцентристская "Новая демократия" — 28,07% голосов (75 " [22]=> string(79) " мандатов). На третьем месте остается ультраправая "Золотая заря", " [23]=> string(81) " которая получила 6,98% голосов и 18 мест. "Независимые греки!" " [24]=> string(79) " (АНЭЛ) проходят в парламент с 3,69% голосов, у партии десять " [25]=> string(82) " мест.
Если кто может, подскажите метод по записи в файл Test.txt в теги news01 и end1
БД уже начал изучать, возможно что-то получится
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.09.2015, 11:54
Помогаю со студенческими работами здесь

Работа с массивами
плиз исправьте ошибки в коде //--------------------------------------------------------------------------- #include &lt;stdlib.h&gt; ...

Работа с массивами
Здравствуйте, нужно прописать некий слайдер. Задача выглядит так: Имеется массив с элементами в виде небольших текстов. Нужно по очереди...

Работа с массивами
1 дан одномерный массив чисел определить каких чисел больше положительных или отрицательных 2 дана матрица вещественных чисел...

Работа с массивами
1.получить элементы квадратной матрицы A={aij }(i=j=1,2,3,.....,n) где n=8, aij=(|3.7-j|-2)(i-4.3)*2^-i 2.из матрицы А сформирован...

работа с массивами
Привет, напомните как можно пройтись по массиву такого типа: Array ( =&gt; Array ( =&gt; Array ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru