Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Обрезание текста на PHP после третьей запятой, как сделать его правильным
Покинул форум
Сообщений всего: 33
Дата рег-ции: Янв. 2012 Откуда: Уфа
Помог: 0 раз(а)
Всем привет. У меня стоит задача обрезать текст после третьей запятой. У меня есть три кода, но все работают неправильно.
К примеру есть текст "пассажирский самолет, авиакомпания, закат, красное небо, перистые облака, след от двигателей, взлет, удачного полета", нужно его сократить до третьей запятой, должно получиться так: "пассажирский самолет, авиакомпания, закат"
Вот три кода:
1.
Обрезают они этот текст вот так:
1. пассажирский самолет, авиакомпания, закат, красное
2. пассажирский самолет, авиакомпания, закат
3. пассажирский самолет, авиакомпания, закат, красное небо
Работает правильно только второй вариант, но он не работает для множества картинок, то есть текст это ключевые слова картинок, в админке когда я обновляю страницу происходит запрос в базу данных и ключи в обрезанном виде записываются в БД, Код номер 2 работает только если есть одна картинка, а если много, то уже на сайте выводятся крякозябры.
1-й и 3-й варианты неправильно обрезают текст, они не режут вплоть до запятой, а просто режут по количеству символов. Как бы подобрать код, чтобы он правильно обрезал текст, с точностью до запятой?
kokandrey
Отправлено: 24 Октября, 2012 - 20:38:45
Новичок
Покинул форум
Сообщений всего: 18
Дата рег-ции: Янв. 2010 Откуда: Нижегородская обл. г. Дзержинск
Помог: 1 раз(а)
Разбей строку на части в массив с разделителем ",". Объедини первые три элемента в одну строку через знак ",".
Покинул форум
Сообщений всего: 33
Дата рег-ции: Янв. 2012 Откуда: Уфа
Помог: 0 раз(а)
В таком случае вся страница ломается и вместо букв отображаются кракозябры. Работет только для одной картинки на странице, если их много уже не работает, вся страница ломается
Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011 Откуда: Одесса, Украина
Помог: 131 раз(а)
у вас в этом тексте есть html разметка?
----- Just do it
AkudJEE
Отправлено: 24 Октября, 2012 - 20:47:38
Новичок
Покинул форум
Сообщений всего: 33
Дата рег-ции: Янв. 2012 Откуда: Уфа
Помог: 0 раз(а)
Нет, вместо текста я поставлю запрос с бд, вот такой $row->metakey
kokandrey
Отправлено: 24 Октября, 2012 - 20:50:30
Новичок
Покинул форум
Сообщений всего: 18
Дата рег-ции: Янв. 2010 Откуда: Нижегородская обл. г. Дзержинск
Помог: 1 раз(а)
текст PHP в студию и крякозябу тоже.
В моем примере в конце можно удалить массив i, может поможет.
Panoptik
Отправлено: 24 Октября, 2012 - 20:53:56
Постоянный участник
Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011 Откуда: Одесса, Украина
Помог: 131 раз(а)
вариант предложенный kokandrey верный, почему у вас ломается страница посмотрите в исходном коде. как вариант могут попасться кавычки и они нарушают код, нужно их экранировать некоторыми функциями например htmlspecialchars
if(empty($row->metadesc)&&empty($row->imgtext)&&$row->catid== 1 OR empty($row->metadesc)&&empty($row->imgtext)&&$row->catid== 5 OR empty($row->metadesc)&&empty($row->imgtext)&&$row->catid== 16 OR empty($row->metadesc)&&empty($row->imgtext)&&$row->catid== 87 OR empty($row->metadesc)&&empty($row->imgtext)&&$row->catid== 90)
{
$dbqq= JFactory::getDBO();
$queryqq="UPDATE `имяБД`.`имятаблицы` SET `metadesc` = '$imgmetadescimages' WHERE `jos_joomgallery`.`id` ='$s'";
elseif(empty($row->metadesc)&&$row->catid== 1 OR empty($row->metadesc)&&$row->catid== 5 OR empty($row->metadesc)&&$row->catid== 16 OR empty($row->metadesc)&&$row->catid== 87 OR empty($row->metadesc)&&$row->catid== 90){
Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011 Откуда: Одесса, Украина
Помог: 131 раз(а)
код говно, это так между нами
по сути без данных с которым работает этот "код" нельзя ничего сказать . нужно знать что в него входит и что получается в браузере, именно в исходном коде
----- Just do it
AkudJEE
Отправлено: 24 Октября, 2012 - 21:02:03
Новичок
Покинул форум
Сообщений всего: 33
Дата рег-ции: Янв. 2012 Откуда: Уфа
Помог: 0 раз(а)
Код сам делал, может быть и гавно (Добавление)
Тему можно закрыть. Вот такой код буду использовать:
Покинул форум
Сообщений всего: 18
Дата рег-ции: Янв. 2010 Откуда: Нижегородская обл. г. Дзержинск
Помог: 1 раз(а)
Ну смысл я передел тебе правильный, что сперва в массив, а потом выбрать из массива нужное, а имена переменных и как получается первоначальная строка мог знать только ты, так как ты придумывал исходный код всей программы.
armancho7777777
Отправлено: 25 Октября, 2012 - 09:43:04
Активный участник
Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011 Откуда: Москва
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.