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

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

Strict Standards: Resource ID#37 used as offset, casting to integer (37) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Вопрос по функции php
ТвойWeb » WebMaster класс » PHP/Perl » Вопрос по функции php

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

1. Alone - 04 Июля, 2007 - 16:24:35 - перейти к сообщению
Есть например предложение:

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

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

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

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

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

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

Чайники, гуру, всех, стран, объединяйтесь
2. ETC - 04 Июля, 2007 - 16:30:55 - перейти к сообщению
Модификатор {} тебе поможет.
Не проверял, но навскидку:
CODE:
$keywords = preg_split("/[\s,.-!]{3,100}/", $title);

Щас точно не вспомню…
3. Alone - 04 Июля, 2007 - 18:28:31 - перейти к сообщению
ETC
чёт никак...
по разному экспериментировал Улыбка
выдавало даже такие варианты:
, Ч, а, й, н, и, к, и, , и, , г, у, р, у, , p, h, p, , в, с, е, х, , с, т, р, а, н, , о, б, ъ, е, д, и, н, я, й, т, е, с, ь,
Улыбка Улыбка
Пробовал даже так как-нибудьть - substr($title, 3 , 3) тоже ничего....
4. ETC - 05 Июля, 2007 - 01:05:23 - перейти к сообщению
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>
5. Alone - 05 Июля, 2007 - 01:40:00 - перейти к сообщению
ETC

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

)


Вообще не хотелось бы сильно отдаляться от варианта:
CODE:
$title = "Чайники и гуру php всех стран - объединяйтесь!";
$keywords = preg_split("/[\s,.-]+/", $title);
$keywords = implode(", ", $keywords);
6. TvoyWeb - 05 Июля, 2007 - 07:02:51 - перейти к сообщению
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;
?>
7. Alone - 05 Июля, 2007 - 07:13:48 - перейти к сообщению
TvoyWeb
Классно. Улыбка
Спасибо.
Как всегда идеально Подмигивание
8. ETC - 05 Июля, 2007 - 13:35:08 - перейти к сообщению
Alone
А у меня все нормально выдает. Видимо, локаль неправильная стоит.
Просто, если нужно слова разбивать, то надо разбивать по словам, а не по их разделителям.
9. Alone - 05 Июля, 2007 - 13:48:47 - перейти к сообщению
ETC пишет:
Видимо, локаль неправильная стоит.

У меня на sweb.ru... не знаю почему, но не пашет там, выдаёт Array.....
10. ETC - 05 Июля, 2007 - 23:16:41 - перейти к сообщению
Добавь
CODE:
setlocale(LC_CTYPE, "ru_RU.CP1251");

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

У меня тоже не заработало поначалу, но когда добавил, то заработало:
http://etcs.ru/files/words.php

Форум на AlfaSpace.NET


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

[Script Execution time: 0.0436]     [ 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