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

Форум PHP

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

 

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

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

тема: Разбить предложение на слова запятыми
 
 автор: korifan   (05.06.2014 в 17:41)   письмо автору
 
 

Есть код добавляющий название(titela) в бд

<?
if (isset($_POST['titla']))       {$titla $_POST['titla']; if ($titla == '') {unset($titla);}}
if (isset(
$titla))
{
                               
$date date("Y-m-d");
$result mysql_query ("INSERT INTO date (title,date) VALUES ('$titla','$date')");
if (
$result == 'true') {echo "";}
else {echo 
"";}
}         
else 
{
echo 
"";
}
         
?>

помогите разбить это название(titela) на слова запятыми и что бы это записалось бы в бд в поле meta_k

  Ответить  
 
 автор: confirm   (06.06.2014 в 00:40)   письмо автору
 
   для: korifan   (05.06.2014 в 17:41)
 

Что значит "разбить запятыми"?

  Ответить  
 
 автор: moonfox   (06.06.2014 в 07:10)   письмо автору
 
   для: korifan   (05.06.2014 в 17:41)
 

шикарный код.

типа того?
echo $titla= preg_replace('/ /i', ',' , $titla);

  Ответить  
 
 автор: confirm   (06.06.2014 в 07:26)   письмо автору
 
   для: moonfox   (06.06.2014 в 07:10)
 

Обязательно preg в таком случае?

  Ответить  
 
 автор: moonfox   (06.06.2014 в 08:10)   письмо автору
 
   для: confirm   (06.06.2014 в 07:26)
 

не факт)

  Ответить  
 
 автор: korifan   (06.06.2014 в 10:22)   письмо автору
 
   для: moonfox   (06.06.2014 в 07:10)
 

Этот код выводит разбитое запятыми предложение, а мне нужно что бы оно записывалось бы в бд в поле meta_k.

  Ответить  
 
 автор: moonfox   (06.06.2014 в 12:05)   письмо автору
 
   для: korifan   (06.06.2014 в 10:22)
 

я думаю вам нужно хотя бы базис постигнуть
чтение/запись в БД....

  Ответить  
 
 автор: confirm   (06.06.2014 в 15:19)   письмо автору
 
   для: korifan   (06.06.2014 в 10:22)
 

Метатег keywords и содержит через запятую значения, если именно это подразумевается, зачем разбивать? Массив значений в одно поле таблицы записать нельзя, нет такого типа данных.

  Ответить  
 
 автор: moonfox   (06.06.2014 в 08:12)   письмо автору
 
   для: korifan   (05.06.2014 в 17:41)
 

str_replace();

  Ответить  
 
 автор: confirm   (06.06.2014 в 15:17)   письмо автору
 
   для: moonfox   (06.06.2014 в 08:12)
 

Думайте, не это, не preg так как вы его прописали не в тему.

  Ответить  
 
 автор: moonfox   (06.06.2014 в 16:59)   письмо автору
 
   для: confirm   (06.06.2014 в 15:17)
 

у чела титла и так пишется в БД
его вопрос вообще хз что предполагает
разбивать и писать в БД.......
ели это киворд то вообще нет смысла еще и в БД писать
сразу титлу в мету ставить и все

  Ответить  
 
 автор: Commander   (06.06.2014 в 20:59)   письмо автору
 
   для: korifan   (05.06.2014 в 17:41)
 

Вы имеете в виду, чтобы вместо пробелов были запятые? Примитив:
<?php
$_POST
['titla'] = str_replace(" "","$_POST["titla']);//Первый параметр функции - пробел в кавычках

Кстати, вместо
<?php
if ($result == 'true')

надо написать
<?php
if ($result)

  Ответить  
 
 автор: tvv123456   (06.06.2014 в 22:37)   письмо автору
 
   для: Commander   (06.06.2014 в 20:59)
 

>Кстати, вместо
<?php
>if ($result == 'true')

>надо написать
<?php
>if ($result)


а вот не надо так как раз писать, лучше:


if($result === true)

а то всякое бывает :)
если переменная может принимать только false и true, то и сравнивать лучше бы с ними, а то и "-1", для php true, да и "0" в вашем случае может дать неожиданный результат/

  Ответить  
 
 автор: Commander   (06.06.2014 в 22:59)   письмо автору
 
   для: tvv123456   (06.06.2014 в 22:37)
 

а вот не надо так как раз писать, лучше:


if($result === true) 

а то всякое бывает :)
если переменная может принимать только false и true, то и сравнивать лучше бы с ними, а то и "-1", для php true, да и "0" в вашем случае может дать неожиданный результат/


Не выйдет. Если вы посмотрите код, то увидите, что переменная $result содержит в себе значение, возвращаемое функцией mysql_query(). А это либо false, либо ресурс, который !== true.

  Ответить  
 
 автор: tvv123456   (08.06.2014 в 20:58)   письмо автору
 
   для: Commander   (06.06.2014 в 22:59)
 

Прошу прощения.
Думаю согласитесь, что принцип тот же
бла-бла !==false
сами сказали: либо false либо значение

  Ответить  
 
 автор: Commander   (09.06.2014 в 05:22)   письмо автору
 
   для: tvv123456   (08.06.2014 в 20:58)
 

Принцип ясен. Но $result === true работать не будет. Потому что $result == true, но тип данных не совпадает.

  Ответить  
 
 автор: Igorek   (09.06.2014 в 10:01)   письмо автору
 
   для: tvv123456   (06.06.2014 в 22:37)
 

Как правильно заметили ниже, значение $result может быть равно resource, true (для запросов типа INSERT, UPDATE...) или false.
Т.е. в данном случае, чтобы просто убедиться, что запрос был корректно выполнен, достаточно проверки:
<?php
if ($result)

т.к. resource == true и true == true. Или, с проверкой типа данных:
<?php
if ($result !== false)

  Ответить  
 
 автор: tvv123456   (12.06.2014 в 21:55)   письмо автору
 
   для: Commander   (06.06.2014 в 20:59)
 

А если в title используются знаки препинания и кавычки?
Может лучше использовать preg_match_all, выбирая слова [А-я] {3,15}? - Единственное наверное лучше тогда keywords хранить в БД, а не использовать preg_match_all каждый раз когда запрашивается страница.

  Ответить  
 
 автор: Commander   (13.06.2014 в 07:19)   письмо автору
 
   для: tvv123456   (12.06.2014 в 21:55)
 

А если в title используются знаки препинания и кавычки?

А что мешает тем же str_replace() экранировать запятые в них? Или заменить запятые, ну, к примеру, двойными запятыми?

  Ответить  
 
 автор: tvv123456   (15.06.2014 в 11:07)   письмо автору
 
   для: Commander   (13.06.2014 в 07:19)
 

>А что мешает тем же str_replace() экранировать запятые в них? Или заменить запятые, ну, к примеру, двойными запятыми?

Что за чушь? зачем что-то экранировать и добавлять в кейворды лишние символы?

Я имел ввиду, что когда вы замените пробелы запятыми, то могут получиться всякие некрасивые кейворды типа слово2,",слово2,",слово3,,слово4;,;,слово5 и т.п. А предлоги тоже отдельным кейвордом будут? все таки str_replace не для этого случая, а получив все слова в массиве при помощи preg_match_all, можно использовать implode(",", $array) и все получится красиво и без всякого мусора.

  Ответить  
 
 автор: moonfox   (15.06.2014 в 14:27)   письмо автору
 
   для: tvv123456   (15.06.2014 в 11:07)
 

у чела заголовок служит kw
а вы беспокоитесь о записи в БД
да еще и через запятые))))
накой хрен)))))))

если он так парится о kw
то в админке при правке страницы снизу идут 3 поля title keys descr
и в них без всяких запитых записывается строка для meta
в счлучае когда там пусто выводится в title kw и descr - сам заголовок весь как есть

  Ответить  
 
 автор: tvv123456   (15.06.2014 в 15:42)   письмо автору
 
   для: moonfox   (15.06.2014 в 14:27)
 

>у чела заголовок служит kw
>а вы беспокоитесь о записи в БД
>да еще и через запятые))))
>накой хрен)))))))
>
>если он так парится о kw
>то в админке при правке страницы снизу идут 3 поля title keys descr
>и в них без всяких запитых записывается строка для meta
>в счлучае когда там пусто выводится в title kw и descr - сам заголовок весь как есть

Согласен на все 100%, НО бывает такая ситуация когда материал добавляют юзеры сайта, тогда есть вероятность, что в заголовках они укажут больше кейвордов, чем если бы их попросить написать в отдельном поле к своему материалу, хоть и вероятность уже и достаточно ничтожна.

А так все-таки хотелось помочь топик-стартеру найти оптимальное решение его задачи.

  Ответить  
Rambler's Top100
вверх

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