Jump to content

Recommended Posts

  Hello!
Есть строка я рядом картинок где формат последней картинки отличается

 

Edit by Psycho: Translation: There is a line next to the pictures where the format of the last picture differs

$str= ‘ <figure class="article-body-content-main-photo full-width">
<img sizes="(max-width: 800px) calc(100vw - 20px), (max-width: 1280) 55vw, 700px" srcset= "//site.com/article-leads-horizontal-261/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png 261w, //site.com/article-leads-horizontal-437/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png 437w, //site.com/article-leads-horizontal-800/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png 800w, //site.com/article-leads-horizontal/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png 700w, //site.com/article-leads-horizontal-1400/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png 1400w, " src="//site.com/article-leads-horizontal/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png" alt="" />’;

And using preg_match_all with

$pattern = '~
//[\s]* # symbol with possible backspace
([\w\.\/\-]+) # get list of images of article from next article html
(?:
[\s]*
([\w]+) #get dimention size of image
[\s]*
)
| # condition for last image
"
~isx';

I got results:
 

[0] => Array
(
[0] => //img.wennermedia.com/article-leads-horizontal-261/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png 261w
[1] => //img.wennermedia.com/article-leads-horizontal-437/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png 437w
[2] => //img.wennermedia.com/article-leads-horizontal-800/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png 800w
[3] => //img.wennermedia.com/article-leads-horizontal/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png 700w
[4] => //img.wennermedia.com/article-leads-horizontal-1400/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png 1400w
[5] => "
[6] => "
[7] => //img.wennermedia.com/article-leads-horizontal/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png
[8] => "
)

[1] => Array
(
[0] => img.wennermedia.com/article-leads-horizontal-261/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png
[1] => img.wennermedia.com/article-leads-horizontal-437/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png
[2] => img.wennermedia.com/article-leads-horizontal-800/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png
[3] => img.wennermedia.com/article-leads-horizontal/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png
[4] => img.wennermedia.com/article-leads-horizontal-1400/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.png
[5] =>
[6] =>
[7] => img.wennermedia.com/article-leads-horizontal/screen-shot-2017-06-19-at-23406-pm-73259c31-a395-463b-8eaa-bf4f9152d9aa.pn
[8] =>
)

[2] => Array
(
[0] => 261w
[1] => 437w
[2] => 800w
[3] => 700w
[4] => 1400w
[5] =>
[6] =>
[7] => g
[8] =>
)

All images got ok, but last not.
Which is the valid way ?

Thanks!

Edited by Psycho
Link to comment
https://forums.phpfreaks.com/topic/304177-get-list-of-images/
Share on other sites

@mstdmstdd

 

Not sure I understand your problem. There are six (6) images in the content if the variable $str and there are six images in your result array. Is your problem the fact that "g" is returned as the 2nd parameter for the last image? There is no dimension in the source for that image, so you won't get back a valid dimension anyway. Are you just wanting to get an empty value for that then?

 

EDIT: Ah, sorry, I now see the "g" was being stripped off the end of the image name.

Edited by Psycho
Link to comment
https://forums.phpfreaks.com/topic/304177-get-list-of-images/#findComment-1547581
Share on other sites

I'm sure your expression can be written more simply. But, your problem can be resolved by removing all the line-breaks, spaces and comments you used to help make the expression easier to read. You can always add several PHP comment lines before or after the expression definition to explain the different parts of the expression.

$pattern = '~//[\s]*([\w\.\/\-]+)(?:[\s]*([\w]+)[\s]*)*| "~isx';
Edited by Psycho
  • Like 1
Link to comment
https://forums.phpfreaks.com/topic/304177-get-list-of-images/#findComment-1547584
Share on other sites

Thank you for your explanations!

But did you mean that this way of pattern 

$pattern = '~
//[\s]* # symbol with possible backspace
([\w\.\/\-]+) # get list of images of article from next article html
(
[\s]*
([\w]+) #get dimention size of image
[\s]*
)*
| # condition for last image
[\s]"
~isx';

with x key can bring to wrong working of expression ?

Link to comment
https://forums.phpfreaks.com/topic/304177-get-list-of-images/#findComment-1547627
Share on other sites

Did you remove the "?" from your pattern in your second post?

 

At any rate, he's right, it works with $pattern in a single line as he typed it.

 

I think this might be what got you:

 

Note, however, that this applies only to data characters. Whitespace characters may never appear within special character sequences in a pattern, for example within the sequence (?( which introduces a conditional subpattern.

Link to comment
https://forums.phpfreaks.com/topic/304177-get-list-of-images/#findComment-1547639
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.