检查字符串中的 img src 关键字
Check for img src keyword in a string
我有一个博客系统,用户在 post 内容中输入图像 url,例如
hey how are you <img src="example.com/image.png">
如果用户这样写
hello how are you <img src="example.com/image.png">
然后我想找到这条 img
src
行并将其用作特色图片
这是我尝试过的:
$haystack = 'how are you <img src="hey.png">';
$needle = '<img src="';
if (strpos($haystack, $needle) !== false) {
echo "$needle";
}
else { echo "no"; }
当我回应时,我只得到:
<img src="
我想要完整
<img src="hey.png">
从那个字符串我该怎么做。
strpos
returns 大海捞针的索引。查看将返回值与 substr
和 haystack
组合以获得所需的子字符串。
由于图像 src 是未知的,请使用正则表达式,类似这样的东西(超出我的头脑,所以它可能是不正确的语法):
$string = "hey how are you <img src=\"example.com/image.png\">";
$return = preg_match('/src="([^"]+)"/', '$string', $matches);
您可以使用正则表达式来匹配该字符串。好久没离开了php...所以大概是下面的样子:
<?php
$pattern = '/<img\ssrc\=".*?">/';
$haystack = 'how are you <img src="hey.png">';
preg_match($pattern, $haystack, $matches);
print_r($matches);
?>
结果将是
Array
(
[0] => <img src="hey.png">
)
查看 preg_match() 了解更多详情。
使用 Regular Expression (RegEx)。
很可能更容易
这是一个简单的例子:
$string = 'hey how are you <img src="example.com/image.png"> blah blah';
preg_match('/<img src=".*">/', $string, $matches);
print_r($matches);
这会给你一个像这样的数组:
Array
(
[0] => <img src="example.com/image.png">
)
这应该适合你:
$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]);
输出:
Array
(
[0] => <img src="example.com/image.png">
[1] => <img src="example.com/image2.png">
)
尽管如此,您应该考虑为此使用解析器。它们已经内置了比正则表达式更多的功能,并且错误更清晰。
Regex101: https://regex101.com/r/iY1wX0/1
或者如果你真的只是想要第一个 img
就使用 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];
输出:
<img src="example.com/image.png">
我有一个博客系统,用户在 post 内容中输入图像 url,例如
hey how are you <img src="example.com/image.png">
如果用户这样写
hello how are you <img src="example.com/image.png">
然后我想找到这条 img
src
行并将其用作特色图片
这是我尝试过的:
$haystack = 'how are you <img src="hey.png">';
$needle = '<img src="';
if (strpos($haystack, $needle) !== false) {
echo "$needle";
}
else { echo "no"; }
当我回应时,我只得到:
<img src="
我想要完整
<img src="hey.png">
从那个字符串我该怎么做。
strpos
returns 大海捞针的索引。查看将返回值与 substr
和 haystack
组合以获得所需的子字符串。
由于图像 src 是未知的,请使用正则表达式,类似这样的东西(超出我的头脑,所以它可能是不正确的语法):
$string = "hey how are you <img src=\"example.com/image.png\">";
$return = preg_match('/src="([^"]+)"/', '$string', $matches);
您可以使用正则表达式来匹配该字符串。好久没离开了php...所以大概是下面的样子:
<?php
$pattern = '/<img\ssrc\=".*?">/';
$haystack = 'how are you <img src="hey.png">';
preg_match($pattern, $haystack, $matches);
print_r($matches);
?>
结果将是
Array
(
[0] => <img src="hey.png">
)
查看 preg_match() 了解更多详情。
使用 Regular Expression (RegEx)。
很可能更容易这是一个简单的例子:
$string = 'hey how are you <img src="example.com/image.png"> blah blah';
preg_match('/<img src=".*">/', $string, $matches);
print_r($matches);
这会给你一个像这样的数组:
Array
(
[0] => <img src="example.com/image.png">
)
这应该适合你:
$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]);
输出:
Array
(
[0] => <img src="example.com/image.png">
[1] => <img src="example.com/image2.png">
)
尽管如此,您应该考虑为此使用解析器。它们已经内置了比正则表达式更多的功能,并且错误更清晰。
Regex101: https://regex101.com/r/iY1wX0/1
或者如果你真的只是想要第一个 img
就使用 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];
输出:
<img src="example.com/image.png">