0
$variable = '<img src="http://www.gravatar.com/avatar/66ce1f26a725b2e063d128457c20eda1?s=32&d=identicon&r=PG" height="32" width="32" alt=""/>';

How to get src of this image?

Like:

$src = 'http://www.gravatar.com/avatar/66ce1f26a725b2e063d128457c20eda1?s=32&d=identicon&r=PG';

Thanks.

1
  • Is there anything else in $variable, e.g. other HTML or just the string? Commented Aug 18, 2010 at 9:15

3 Answers 3

6

use regex

preg_match( '@src="([^"]+)"@' , $variable , $match );

And src will be in $match, see print_r( $match ). But this is only for this situation, if you want universal solution (like ' against " etc.) use html/DOM parser.

Sign up to request clarification or add additional context in comments.

1 Comment

Actually one of the rare cases where I think a Regex is justified and better suited than a full blown HTML parser for getting to the desired outcome.
4

You can use an html parser for this. See this one: http://simplehtmldom.sourceforge.net/ (I hope this works for nodes, not just for entire pages).

1 Comment

Suggested third party alternatives that actually use DOM instead of String Parsing: phpQuery, Zend_Dom, QueryPath and FluentDom. However, for the OP's UseCase, a HTML/DOM Parser might be overkill.
1

Use HTML DOM. Download and include simple_html_dom.php file in your script.

Then get image URLs like this:

$html = str_get_html('<img src="http://www.gravatar.com/avatar/66ce1f26a725b2e063d128457c20eda1?s=32&d=identicon&r=PG" height="32" width="32" alt=""/>');

// Find all images
foreach($html->find('img') as $element)
       echo $element->src . '<br>';

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.