Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Разбить строку по пробелам, запятым и небуквенным символам
 
 автор: 2005   (23.12.2005 в 15:39)   письмо автору
 
 

С помощью какой функции можно разбить строку "Дима Миша,Саша %Сергей!" на четыре отдельных слова (без пробелов, запятых и небуквенных символов) ?

   
 
 автор: Shorr Kan   (23.12.2005 в 17:29)   письмо автору
 
   для: 2005   (23.12.2005 в 15:39)
 


<?
function hmm($row,$target){return str_replace($target,"<br>",$row);}
$row="Дима Миша,Саша %Сергей!";
$count=count($bad);
for(
$i=0;$i<$count;$i++){$row=hmm($row,$arr[$i]);}
$row=str_replace("<br><br>","<br>",$row);
print 
$row;
?>

   
 
 автор: cheops   (23.12.2005 в 17:49)   письмо автору
 
   для: 2005   (23.12.2005 в 15:39)
 

Можно воспользоваться регулярными выражениями
<?php 
 $text 
"Дима Миша,Саша %Сергей!";
 
$arr preg_split("|[^\d\w]+|is"$text);
 echo 
"<pre>";
 
print_r($arr);
 echo 
"</pre>";
?>

   
 
 автор: 2005   (23.12.2005 в 18:49)   письмо автору
 
   для: cheops   (23.12.2005 в 17:49)
 

спасибо, и еще маленькое дополнение (не силен я пока в регулярных выражениях)
а как изменить
"|[^\d\w]+|is"
чтобы оно исключало слова из одной буквы "и", "в" ... ?

Заранее благодарен!

   
 
 автор: Guestos   (23.12.2005 в 19:03)
 
   для: 2005   (23.12.2005 в 18:49)
 


<?php 

$arr 
preg_split("|[^\d\w!Й!Ч]+|is"$text); 

?>


ne zabud1 local serveru ukazat1 ru_RU.CP1251 nu ili kakuy dostupna/nuzshna
t.k. simvols cyrilicheskie

   
 
 автор: Guestos   (23.12.2005 в 19:12)
 
   для: 2005   (23.12.2005 в 18:49)
 

sory... =)


<?php 
$text 
"dima masha,sasha %sergey!"
$_null "";
$_patern "/[\w]{1}/i"
$text preg_replace($_patern$_null$text);
$arr preg_split("|[^\d\w]+|is"$text); 
echo 
"<pre>"
print_r($arr); 
echo 
"</pre>"
?>

   
 
 автор: Guestos   (23.12.2005 в 21:04)
 
   для: Guestos   (23.12.2005 в 19:12)
 

sory version2... =)

Da prostyt meny bolee opitnie programers-php
za nepravil1nie podskazki .... =)

vot gotovoe reshenie:


<?php 

$text 
"dima DEf masha, sasha %sergey u k, k 09 ,  o !"
$arr explode(" "$text);
$patern "/[\d\W]/";

foreach(
$arr as $_content){
$_content preg_replace($patern""$_content);
if((
strlen($_content))>1){
echo 
$_content."<br>";
 }
}

?>


PS:
for 2005: a ne proshe li vse eti ne nuzchnie simbols
otsecat1 pered zapis1u b BD....?
eto zche na mnogo udobney...

   
 
 автор: 2005   (24.12.2005 в 09:18)   письмо автору
 
   для: Guestos   (23.12.2005 в 21:04)
 

Спасибо за варианты! :-)

"отсечь" перед записью в БД не проще, т.к. речь идет о поиске в доске объявлений, и задача стоит, чтобы при поисковом запросе например "песок и щебень" находились бы все объявления, в который встречаются слова "песок" или "щебень", но при этом частоупотребляемый союз "и" не учитывался бы, как поисковое слово...


ОЙ!
а это что за штука такая (сорри - совсем пока я начинающия) :-)

local serveru ukazat1 ru_RU.CP1251
???

   
 
 автор: cheops   (24.12.2005 в 02:01)   письмо автору
 
   для: 2005   (23.12.2005 в 18:49)
 

Может их стоит предварительно просто вырезать из строки?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования