Перейти к содержимому





Фотография
Флейм

Помогите с регулярный выражением



Лучший Ответ RusZarj, 21 Апрель 2017 - 13:15

Может быть проще, я в этих функциях как-то не хорошо понимаю. После последней строки весь текст вобще исчезает))

//изменяем пути к картинкам в тексте материала
	$textskartinkami = str_replace('src="images/News/', '<src="images/avtonews/', $textskartinkami);
	$textskartinkami = str_replace('src="images/stories/News/', 'src="images/avtonews/', $textskartinkami);
	$textskartinkami = str_replace('src="images/banners/', 'src="images/avtonews/', $textskartinkami);
	$textskartinkami = str_replace('src="images/', 'src="images/avtonews/', $textskartinkami);
	
//анлинки для ссылок	
	$textskartinkami = preg_replace('/<div class=\"hidewrap\">.*?<\/div>/i','',$textskartinkami); 
	$textskartinkami = preg_replace('/<a.*?[>^]/i','',$textskartinkami); //оставить анкор 
	$textskartinkami = str_replace('</a>','',$textskartinkami); //оставить анкор 

//удаляем проценты из имени картинок	
	$textskartinkami = preg_replace('(?<=\w{2}).*(?=\d)', '-', $textskartinkami); 

В итоге хочу сделать плагин для joomla. В редакторе будет кнопка, жму ее, даю ссылку на новость, скрипт получит заголовок, дату, текст, приведет все к нужному мне виду и загрузит в базу).

 

Кому интересно тут можно посмотреть в живую что выводит скрипт:

 

 

Берет инфу отсюда: 

 

 

Мне удалось получить заголовок, перевести его в транслит, получить дату, получить все фото, получить текст материала, убрать в нем ссылки, поправить пути к картинкам. Осталось только избавиться от процентов в имени и можно идти дальше, к написанию плагина.

 

оффтоп
А можно в заголовке темы исправить слово "регулярным"?

Не страдай хернёй реплэйсами и регулярками (для замен процентов), тебе нужна функция urldecode.

Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 Off   Alberts

Alberts
  • Premium
  • 101 сообщений
    • Онлайн: 1д 10ч 49м 4с
  • Регистрация: 12.08.2016
44 - Репутация
  • Специализация:
    Программист

Отправлено 21 Апрель 2017 - 11:50

Добрый день, написал на нескольких тематичных форумах, ответов нет((

Пишу что-то типа парсера для своего сайта, застрял на одном месте. 

Нужно из строки:

<img src="images/avtonews/FL%203D.jpg" alt="FL 3D"...>

сделать:

<img src="images/avtonews/FL-203D.jpg" alt="FL 3D"...>

То есть заменить символы процента (%) на минус (-).

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

 

Как вы понимаете таких строк много и названия файлов картинок разные и проценты у них в случайных местах, а то бывает и несколько процентов на одной картинке и нужно всех их заменить на минус. Пологаю необходимо прописать что-то типа:

preg_replace('src="images/avtonews/', '-', $text); 

Гулю со вчерашнего дня, никак не разберусь как правильно написать первую часть((

Прошу помощи в данном вопросе.






#2 On   akir

akir
  • Модератор
  • 1 068 сообщений
    • Онлайн: 46д 13ч 10м 49с
  • Регистрация: 04.05.2014
600 - Репутация

Отправлено 21 Апрель 2017 - 11:59

(?<=\w{2}).*(?=\d)

?


точно str-replace не проще?



#3 Off   Alberts

Alberts
  • Premium
  • 101 сообщений
    • Онлайн: 1д 10ч 49м 4с
  • Регистрация: 12.08.2016
44 - Репутация
  • Специализация:
    Программист

Отправлено 21 Апрель 2017 - 12:08

Может быть проще, я в этих функциях как-то не хорошо понимаю. После последней строки весь текст вобще исчезает))

//изменяем пути к картинкам в тексте материала
	$textskartinkami = str_replace('src="images/News/', '<src="images/avtonews/', $textskartinkami);
	$textskartinkami = str_replace('src="images/stories/News/', 'src="images/avtonews/', $textskartinkami);
	$textskartinkami = str_replace('src="images/banners/', 'src="images/avtonews/', $textskartinkami);
	$textskartinkami = str_replace('src="images/', 'src="images/avtonews/', $textskartinkami);
	
//анлинки для ссылок	
	$textskartinkami = preg_replace('/<div class=\"hidewrap\">.*?<\/div>/i','',$textskartinkami); 
	$textskartinkami = preg_replace('/<a.*?[>^]/i','',$textskartinkami); //оставить анкор 
	$textskartinkami = str_replace('</a>','',$textskartinkami); //оставить анкор 

//удаляем проценты из имени картинок	
	$textskartinkami = preg_replace('(?<=\w{2}).*(?=\d)', '-', $textskartinkami); 

В итоге хочу сделать плагин для joomla. В редакторе будет кнопка, жму ее, даю ссылку на новость, скрипт получит заголовок, дату, текст, приведет все к нужному мне виду и загрузит в базу).

 

Кому интересно тут можно посмотреть в живую что выводит скрипт:

Скрытый контент:
                          Или
    Купить Premium и получить доступ ко всему контенту сайта

 

Берет инфу отсюда: 

Скрытый контент:
                          Или
    Купить Premium и получить доступ ко всему контенту сайта

 

Мне удалось получить заголовок, перевести его в транслит, получить дату, получить все фото, получить текст материала, убрать в нем ссылки, поправить пути к картинкам. Осталось только избавиться от процентов в имени и можно идти дальше, к написанию плагина.

 

оффтоп
А можно в заголовке темы исправить слово "регулярным"?


Сообщение отредактировал Alberts: 21 Апрель 2017 - 12:28


#4 Off   Alberts

Alberts
  • Premium
  • 101 сообщений
    • Онлайн: 1д 10ч 49м 4с
  • Регистрация: 12.08.2016
44 - Репутация
  • Специализация:
    Программист

Отправлено 21 Апрель 2017 - 12:56

Похоже серьезная тема. Может кто знает хороший курс где учат регулярным выражениям str_replace и preg_replace, много всего перегуглил, как-то не доходчего они объясняются. Весь этот набор символов в скобках совсем не понятен.


Сообщение отредактировал Alberts: 21 Апрель 2017 - 12:58


#5 On   RusZarj

RusZarj
  • Сливапер LVL 5
  • 935 сообщений
    • Онлайн: 17д 14ч 55м 57с
  • Регистрация: 27.01.2014
470 - Репутация
  • Специализация:
    Манимейкер

Отправлено 21 Апрель 2017 - 13:15   Лучший Ответ

Может быть проще, я в этих функциях как-то не хорошо понимаю. После последней строки весь текст вобще исчезает))

//изменяем пути к картинкам в тексте материала
	$textskartinkami = str_replace('src="images/News/', '<src="images/avtonews/', $textskartinkami);
	$textskartinkami = str_replace('src="images/stories/News/', 'src="images/avtonews/', $textskartinkami);
	$textskartinkami = str_replace('src="images/banners/', 'src="images/avtonews/', $textskartinkami);
	$textskartinkami = str_replace('src="images/', 'src="images/avtonews/', $textskartinkami);
	
//анлинки для ссылок	
	$textskartinkami = preg_replace('/<div class=\"hidewrap\">.*?<\/div>/i','',$textskartinkami); 
	$textskartinkami = preg_replace('/<a.*?[>^]/i','',$textskartinkami); //оставить анкор 
	$textskartinkami = str_replace('</a>','',$textskartinkami); //оставить анкор 

//удаляем проценты из имени картинок	
	$textskartinkami = preg_replace('(?<=\w{2}).*(?=\d)', '-', $textskartinkami); 

В итоге хочу сделать плагин для joomla. В редакторе будет кнопка, жму ее, даю ссылку на новость, скрипт получит заголовок, дату, текст, приведет все к нужному мне виду и загрузит в базу).

 

Кому интересно тут можно посмотреть в живую что выводит скрипт:

 

 

Берет инфу отсюда: 

 

 

Мне удалось получить заголовок, перевести его в транслит, получить дату, получить все фото, получить текст материала, убрать в нем ссылки, поправить пути к картинкам. Осталось только избавиться от процентов в имени и можно идти дальше, к написанию плагина.

 

оффтоп
А можно в заголовке темы исправить слово "регулярным"?

Не страдай хернёй реплэйсами и регулярками (для замен процентов), тебе нужна функция urldecode.


Сообщение отредактировал RusZarj: 21 Апрель 2017 - 13:16


#6 Off   Alberts

Alberts
  • Premium
  • 101 сообщений
    • Онлайн: 1д 10ч 49м 4с
  • Регистрация: 12.08.2016
44 - Репутация
  • Специализация:
    Программист

Отправлено 21 Апрель 2017 - 14:19

Не страдай хернёй реплэйсами и регулярками (для замен процентов), тебе нужна функция urldecode.

Огромное спасибо. Все получилось, добавил в двух местах, при скачивании картинки у меня было переименование замены процента на минус, поменял там:

//имя скачиваемой картинки
    $imagename = urldecode($imagename);

//удаляем проценты из имени картинок	
    $textskartinkami = urldecode($textskartinkami);

Теперь скаченная картинка выглядит: FL 3D.jpg, а ссылка в консоли на нее: ../avtonews/FL 3D.jpg
Пробелы остались, но все работает. Большое спасибо за помощь;)




Похожие темы Collapse

  Название темы Форум Автор Статистика Последнее сообщение

Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных