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













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

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



Лучший Ответ 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 Alberts

Alberts
  • Premium
  • Сообщений: 226
  • Регистрация: 12.08.2016
  • Заработано: 157 руб.
Репутация: 116

Награды: 18

  
  
  
  
  
  
  
  

Отправлено 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 akir

akir
  • Модератор
  • Сообщений: 1 328
  • Регистрация: 04.05.2014
  • Заработано: 104 руб.
Репутация: 755

Награды: 27

  
  
  
  
  
  
  
  

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

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

?


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



#3 Alberts

Alberts
  • Premium
  • Сообщений: 226
  • Регистрация: 12.08.2016
  • Заработано: 157 руб.
Репутация: 116

Награды: 18

  
  
  
  
  
  
  
  

Отправлено 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. В редакторе будет кнопка, жму ее, даю ссылку на новость, скрипт получит заголовок, дату, текст, приведет все к нужному мне виду и загрузит в базу).

 

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

 

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

 

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

 

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


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


#4 Alberts

Alberts
  • Premium
  • Сообщений: 226
  • Регистрация: 12.08.2016
  • Заработано: 157 руб.
Репутация: 116

Награды: 18

  
  
  
  
  
  
  
  

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

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


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


#5 RusZarj

RusZarj
  • Сливапер LVL 6
  • Сообщений: 1 398
  • Регистрация: 27.01.2014
  • Заработано: 103 руб.
Репутация: 755

Награды: 24

  
  
  
  
  
  
  
  

Отправлено 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 Alberts

Alberts
  • Premium
  • Сообщений: 226
  • Регистрация: 12.08.2016
  • Заработано: 157 руб.
Репутация: 116

Награды: 18

  
  
  
  
  
  
  
  

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

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

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

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

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

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




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

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

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

×

Зарегистрируйся моментально!