检查字符串中的img src关键字

I have a blog system where user inputs the image url in the post content like

hey how are you <img src="example.com/image.png"> 

if the user has written like this

hello how are you <img src="example.com/image.png">

Then I want to find this img src line and use it as featured image

here is what I have tried:

$haystack = 'how are you <img src="hey.png">';

$needle = '<img src="';

if (strpos($haystack, $needle) !== false) {

    echo "$needle";

}
else { echo "no"; }

When I echo I only get:

 <img src="

I want to get whole

<img src="hey.png"> 

from that string how can I do this.

This should work for you:

$string = 'hey how are you <img src="example.com/image.png"> test test <img src="example.com/image2.png">';
preg_match_all('/(<img .*?>)/', $string, $img_tag);
print_r($img_tag[1]);

Output:

Array
(
    [0] => <img src="example.com/image.png">
    [1] => <img src="example.com/image2.png">
)

You should consider using a parser for this though. They have a lot more functionality already built in than a regex, and will error cleaner.

Regex101: https://regex101.com/r/iY1wX0/1

or if you really only over want the first img just use preg_match.

<?php
$string = 'hey how are you <img src="example.com/image.png"> test test <img src="example.com/image2.png">';
preg_match('/(<img .*?>)/', $string, $img_tag);
echo $img_tag[1];

Output:

<img src="example.com/image.png">

strpos returns the index of where the needle starts in the haystack. Look at combining the returned value with substr and haystack to get the substring you want.

As the image src is an unknown, use regex, something like this (off the top of my head, so it may be incorrect syntax):

$string = "hey how are you <img src=\"example.com/image.png\">"; 
$return = preg_match('/src="([^"]+)"/', '$string', $matches);

You can use regular expression to match that string. It have been a long time since I left php... So it's something like below:

<?php
  $pattern = '/<img\ssrc\=".*?">/';
  $haystack = 'how are you <img src="hey.png">';

  preg_match($pattern, $haystack, $matches);

  print_r($matches);
?>

And the result will be

Array
(
    [0] => <img src="hey.png">
)

Check out preg_match() for more details.

This is most probably way easier with using a Regular Expression (RegEx).

Here is an simple example:

$string = 'hey how are you <img src="example.com/image.png"> blah blah';
preg_match('/<img src=".*">/', $string, $matches);
print_r($matches);

Which would give you an array like this:

Array
(
    [0] => <img src="example.com/image.png">
)