Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Вопрос по функции php
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Alone
Отправлено: 04 Июля, 2007 - 16:24:35
Post Id



Super Member


Покинул форум
Сообщений всего: 2393
Дата рег-ции: Дек. 2004  

Карма 8




Есть например предложение:

Чайники и гуру php всех стран - объединяйтесь!

Я делаю следующее:
$title = "Чайники и гуру php всех стран - объединяйтесь!";
CODE:
$keywords = preg_split("/[\s,.-!]+/", $title);
$keywords = implode(", ", $keywords);

Это в итоге даёт мне такой вид:

Чайники, и, гуру, php, всех, стран, объединяйтесь

А мне нужно чтобы слова манее трёх букв игнорировались, т.е. чтобы их не было.

Т.е. чтобы вот так было:

Чайники, гуру, всех, стран, объединяйтесь
 
 Top
ETC Администратор
Отправлено: 04 Июля, 2007 - 16:30:55
Post Id



Flash-coder


Покинул форум
Сообщений всего: 5275
Дата рег-ции: Дек. 2003  
Откуда: TimeZero

Карма 26




Модификатор {} тебе поможет.
Не проверял, но навскидку:
CODE:
$keywords = preg_split("/[\s,.-!]{3,100}/", $title);

Щас точно не вспомню…
 
 Top
Alone
Отправлено: 04 Июля, 2007 - 18:28:31
Post Id



Super Member


Покинул форум
Сообщений всего: 2393
Дата рег-ции: Дек. 2004  

Карма 8




ETC
чёт никак...
по разному экспериментировал Улыбка
выдавало даже такие варианты:
, Ч, а, й, н, и, к, и, , и, , г, у, р, у, , p, h, p, , в, с, е, х, , с, т, р, а, н, , о, б, ъ, е, д, и, н, я, й, т, е, с, ь,
Улыбка Улыбка
Пробовал даже так как-нибудьть - substr($title, 3 , 3) тоже ничего....
 
 Top
ETC Администратор
Отправлено: 05 Июля, 2007 - 01:05:23
Post Id



Flash-coder


Покинул форум
Сообщений всего: 5275
Дата рег-ции: Дек. 2003  
Откуда: TimeZero

Карма 26




CODE:
<html>

<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>

<body>

<?php
setlocale(LC_CTYPE, "ru_RU.CP1251");
$title = "Чайники и гуру php всех стран — объединяйтесь!";
preg_match_all("/\w{4,}/", $title, $matches);
?>
<pre>
<?
print_r($matches);
?>
</pre>
</body>

</html>
 
 Top
Alone
Отправлено: 05 Июля, 2007 - 01:40:00
Post Id



Super Member


Покинул форум
Сообщений всего: 2393
Дата рег-ции: Дек. 2004  

Карма 8




ETC

Выдаёт:
CODE:
Array
(
[0] => Array
(
)

)


Вообще не хотелось бы сильно отдаляться от варианта:
CODE:
$title = "Чайники и гуру php всех стран - объединяйтесь!";
$keywords = preg_split("/[\s,.-]+/", $title);
$keywords = implode(", ", $keywords);
 
 Top
TvoyWeb Администратор
Отправлено: 05 Июля, 2007 - 07:02:51
Post Id



Главный здесь


Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003  
Откуда: Tashkent Uz

Карма 52




Alone
ИМХО только так:
CODE:
<?php
$title = "Чайники и гуру php всех стран - объединяйтесь!";
$keywords = preg_split("/[\s[:punct:]]+/", $title,-1,PREG_SPLIT_NO_EMPTY);
$keywords = preg_replace("#(?:$|\s)[A-Za-zА-Яа-я0-9]{1,3},#is","",implode(", ", $keywords));
echo $keywords;
?>
 
 Top
Alone
Отправлено: 05 Июля, 2007 - 07:13:48
Post Id



Super Member


Покинул форум
Сообщений всего: 2393
Дата рег-ции: Дек. 2004  

Карма 8




TvoyWeb
Классно. Улыбка
Спасибо.
Как всегда идеально Подмигивание
 
 Top
ETC Администратор
Отправлено: 05 Июля, 2007 - 13:35:08
Post Id



Flash-coder


Покинул форум
Сообщений всего: 5275
Дата рег-ции: Дек. 2003  
Откуда: TimeZero

Карма 26




Alone
А у меня все нормально выдает. Видимо, локаль неправильная стоит.
Просто, если нужно слова разбивать, то надо разбивать по словам, а не по их разделителям.
 
 Top
Alone
Отправлено: 05 Июля, 2007 - 13:48:47
Post Id



Super Member


Покинул форум
Сообщений всего: 2393
Дата рег-ции: Дек. 2004  

Карма 8




ETC пишет:
Видимо, локаль неправильная стоит.

У меня на sweb.ru... не знаю почему, но не пашет там, выдаёт Array.....
 
 Top
ETC Администратор
Отправлено: 05 Июля, 2007 - 23:16:41
Post Id



Flash-coder


Покинул форум
Сообщений всего: 5275
Дата рег-ции: Дек. 2003  
Откуда: TimeZero

Карма 26




Добавь
CODE:
setlocale(LC_CTYPE, "ru_RU.CP1251");

в самом начале кода (Ну, в смысле, где <?php начинается).
Просто решение Маркуса какое-то чумовое :-D

У меня тоже не заработало поначалу, но когда добавил, то заработало:
http://etcs.ru/files/words.php
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« PHP/Perl »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0501]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33