Forum Webscript.Ru
Программирование => PHP => Тема начата: Berkut от 28 Февраля 2004, 09:38:46
-
Есть файл с текстом.По какому принципу можно сделать вот такую вещь:
$a= первая строка из файла
$b= вторая строка
$c= всё остальное
-
[p]file_get_contents[/p] [p]file[/p] [p]fopen[/p]
по принципу чтения мана и размышлений
-
Berkut
вообще-то, вариантов масса.
очень жаль, что человек довольно давно находящийся на форуме, не видит даже приблизительных путей решения.
неужели тебе незнакома, к примеру, команда file?
-
да это я уже сделал. вот теперь вопрос другой вопрос встал,как слово,содержащееся в строке,если его длина больше,допустим 10 символов .пока вот придумал такую вещь:
if (strlen($b[$i])>10)
{
$g=strlen($b[$i]);
for ($cicle=0; $cicle<$g+1; $cicle+=10)
{
$vsp=substr($b[$i], $cicle, 10); #.substr($b[$i], $cicle+10, strlen($b[$i]));
$sp=$sp." ".$vsp." ";
}
$c.=$sp;
}
Где $b[$i]-слово из строки, но вот как повынимать слова из строки???забацать кучу циклов со всякими substr_count и strpos($stroka, " ",$i)
-
вот теперь вопрос другой вопрос встал,как слово,содержащееся в строке,если его длина больше,допустим 10 символов
предлагаю выбрать этот поток сознания вопросом года.
кто за?
-
RomikChef
Я против. Нехорошо над людьми издеваться :)
Berkut
вот как повынимать слова из строки?
$words=explode(" ",$string);
,как (что?) слово,содержащееся в строке
:)
Если ты еще обьяснишь, на фига тебе всё это понадобилось...
-
да..... чё-то я понаписал в торопях.......
я написал некое подобие гостевой книги(без MySQL,на файлах),а нужно было разбивать очень длинные слова в сообщениях,что-бы в случае чего не испортился дизайн гостевухи.
CGVictor - огромное человеческое спасибо,а то бы я щас писал кучу циклов,что-бы выдирать слова из строки
-
Berkut
Я делал проще: верстал ХТМЛ-ку так, чтобы динное слово не давало страничке разьехаться. Браузер рвет слово сам, если блочный элемент не может раздвигаться И его родительский элемент тоже задан жестко.
А делать это на сервере немного неэкономично. Хотя для гостевухи сойдет. Вот если бы на сервере анализировалось слово и расставлялись правильные русские переносы... :)
-
Ого! Гениально!!! Но я как ни пытался - всё безтолку. Пробовал вот так:
И таблицу в таблице
Всё равно расползается! Как-же ты это сделал??? Может ссылку на свою страницу даш? Или пример напиши.
-
Berkut
Сходу сложно, т.к. принципиально не верстаю "не резиновые" сайты.
Но пример постараюсь найти.
Там смысл в том, что большая таблица задана жестко, а вложенная - в процентах. Она, в принципе, разьезжается, но разьезжаться ей некуда. А текст рвется, также как и в "резиновой" таблице при переполнении.
Есть еще css"word-wrap:brake-word", но работает он далеко не везде. Но тоже можно.
-
CGVictor
Цельнолитые слова будут рваться? ;) Очень интересно.
Berkut
Можешь поместить каждое сообщение в слой с параметром "position: relative; width: РАЗМЕР" (я предположил, что другие параметры оставленны по умолчанию)
и после загрузки страницы javascript\'ом
if ( ОЧЕРЕДНОЙ_СЛОЙ.offsetWidth > РАЗМЕР ) {
ОЧЕРЕДНОЙ_СЛОЙ.style.position = \'static\';
ОЧЕРЕДНОЙ_СЛОЙ.style.overflow = \'scroll\';
}
И в случае превышения размера, будет к данному сообщению скрол пририсовываться. Совместимость по броузерам оч. неплохая. Единственное "РАЗМЕР" придется подгонять в разных броузерах. Для "резины" данный способ не подходит.
-
// кастрирование строки
function strings_stripstring($text, $wrap, $length)
{
// разбиваем очень длинные слова (длиннее $wrap) на несколько маленьких
$wordlen = 0;
for($i = 0; $i < strlen($text); $i++)
{
$text2 .= $text[$i];
if($text[$i] != " ")
$wordlen++;
else
$wordlen = 0;
if($wordlen > $wrap)
{
$text2 .= " ";
$wordlen = 0;
}
}
$text = $text2;
// обрезаем строку до нужной длинны ($length)
$text = substr($text, 0, $length);
return $text;
}
Сперто с этого же сайта, с раздела "Статьи по РНР" - "Гостевая книга на PHP/MySQL" Опубликована ровнехонько 2 года назад.
Berkut наведывайся туда,там среди старого хлама можно нарыть несколько крупиц полезной информации.
Очень жаль,однако,что раздел заброшен.
Вот еще пример,немного другой направленности,от от главного "инквизитора" этого форума.
if (preg_match("/[0-9a-zA-Zа-яА-ЯЁё]{30,}/",$notes,$matches)) {
$err.="В отзыве присутствует слишком длинное слово ".$matches[0].". Cократите или разбейте его, пожалуйста.";
}
-
it4all:
Вот еще пример,немного другой направленности,от от главного "инквизитора" этого форума.
как ты посмотришь на то, если я сделаю строку длинной больше 30, например, из плюсов???
-
Yukko я знаю ты большой спец в регулярных,но это не мой код,он немного староват,я думаю символы в квадратных скобках заменить на [\\w.]
Кстати ,ты так и не ответил на мои вопросы,хоть я тебя об этом и просил,ни здесь ни в форуме по регулярным.
Очень жаль (мне по крайней мере.)
-
it4all:
/[0-9a-zA-Zа-яА-ЯЁё]{30,}/
так правильнее:
/\\S{30,}/
-
it4all:
скобках заменить на [\\w.]
точечку надо убрать... иначе совпадет со всем, с чем только можно :), а вообще Макс привел правильный рег.
it4all:
Кстати ,ты так и не ответил на мои вопросы
в форуме по регам я не увидел ни одного топика, в котором ты просил бы о помощи. В топике, где я дал ссылки на статьи я обсуждать твою проблему не собираюсь. Создай новый топик на форуме и попробуем обсудить.
-
Yukko пойми меня правильно,я просто хотел задать(уже задал на этом форуме) вопрос ответ на который ,займет возможно один пост.Не хочу засорять форум такими топиками.
http://forums.webscript.ru/showthread.php?s=&threadid=15669&perpage=15&pagenumber=3
Не сочти за труд.
А Макс действительно прав на все 100,а то,что накалякал я с плюсами не пашет,хотя по идее точка должна была его ухватить.
-
ф-киц wordwrap чем не подходит?