Эта тема на forum.dklab.ru


sadamss: Работа с массивами
Добрый день! Помогите пожалуйста советом, а то сил больше нет искать и спросить не у кого.

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

$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";
}
}

выводит на экран

Строка 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:p></o:p></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:p></o:p></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:p></o:p></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:p></o:p></span></p>

И вложить этот текст в файл test2.txt между ключами news01 end02. HTML теги остаются.
Спасибо всем кто поможет, хоть каким либо советом!
sadamss:
<?
$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";
}
}
?>
Вот укороченный код, в первом явно много лишнего. Подскажите хоть направление поиска, буду очень благодарен.
sadamss:
Проблема в том, что с БД еще не умею работать ((, пробую хоть такой вариант как временное решение. Его на сегодняшний день хватит. Просто есть такая программа как Sasplanet, я хочу сделать автоматическое отображение меток на этой карте, там есть поддержка HTML кода. У меня будет автоматически записываться в метки новости и отображаться. Пока только с помощью PHP решил реализовать эту задумку.

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

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



$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>";
}
}
}[/PHP:1:66be7fed2c]

Результат

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
БД уже начал изучать, возможно что-то получится

Эта тема на forum.dklab.ru