我有一个字符串,并希望删除任何图片网址,例如。包含.jpg结尾。
我能够使用preg_match_all和strpos从字符串中提取和分离图像URL,但现在我需要"删除"字符串本身显示的图像URL(以便我可以将图像与字符串分开处理)
preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $string, $match);
foreach ($match[0] as $link){
$strpos = strpos($link, '.jpg');
if ($strpos !== false){
echo $link;
break;
}
}
输入
$string = 'This is a string with a URL http://google.com and an image URL http://website.com/image.jpg';
期望的输出:
$string 'This is the string with a URL http://google.com and an image URL';
$image = '<img src="http://website.com/image.jpg"/>';
答案 0 :(得分:2)
匹配时的字符串替换可以为您执行此操作
<?php
preg_match_all('#\bhttps?://[^,\s()<>]+(?:\(\w+\)|([^,[:punct:]\s]|/))#', $string, $match);
foreach ($match[0] as $link){
if (strpos($link, '.jpg') !== false){
//Format the image url to an image element
$image = '<img src="'.$link.'" />';
//To substitute the image into the string
echo str_replace($link, $image, $string);
//To remove the link from original text:
echo str_replace($link, '', $string);
break;
}
}
希望这有帮助。
编辑:
为您删除不必要的变量使用,无需在上面的示例中存储strpos结果。
编辑2:修复了$ link string concatenation的语法错误。
答案 1 :(得分:0)
您可以使用til方法检查字符串, $ list =你要检查的内容 $ endOfString =你要找的东西
function endsWith($list, $endOfString)
{
$length = strlen($endOfString);
if ($length == 0) {
return true;
}
return (substr($list, -$length) === $endOfString);
}