PHP 如果 URL 包含特定字母,则从字符串中删除 URL

PHP remove URL from string if URL contains specific letters

我有一个字符串,想删除任何 URL 图片 URL,例如。包含一个 .jpg 结尾。

我能够使用 preg_match_all 和 strpos 从字符串中提取和分离图像 URL,但现在我需要 "remove" 显示的图像 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"/>';

你可以使用til方法来检查字符串, $list = 您要检查的内容 $endOfString = 您要查找的内容

function endsWith($list, $endOfString)
{
    $length = strlen($endOfString);
    if ($length == 0) {
        return true;
    }

    return (substr($list, -$length) === $endOfString);
}

匹配时的字符串替换可以为您完成这个

<?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 字符串连接的语法错误。