2017-10-04 6 views
1

J'ai une chaîne et voudrais supprimer toutes les URL qui sont des URL d'image, ex. contient une fin .jpg. Je peux extraire et séparer l'URL de l'image d'une chaîne avec preg_match_all et strpos, mais maintenant je dois "supprimer" l'URL de l'image affichée de la chaîne elle-même (afin que je puisse traiter l'image séparément de la chaîne)PHP supprimer l'URL de la chaîne si l'URL contient des lettres spécifiques

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; 
    } 
} 

entrée

$string = 'This is a string with a URL http://google.com and an image URL http://website.com/image.jpg'; 

sortie désiré:

$string 'This is the string with a URL http://google.com and an image URL'; 
$image = '<img src="http://website.com/image.jpg"/>'; 
+0

Str_replace l'URL avec '' –

Répondre

2

remplacement de chaîne sur le match pourrait faire pour vous

<?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; 
    } 
} 

Espérons que cela aide.


EDIT:

Supprimer Utilisez la variable unenecessary pour vous, pas besoin pour le stockage des strpos résultent dans l'exemple ci-dessus.

EDIT 2: Erreur de syntaxe corrigée avec concaténation de chaîne $ link.

+0

génial !! fonctionne comme un charme! Merci beaucoup ! – rainerbrunotte

0

Vous pouvez utiliser jusqu'à la méthode pour vérifier la chaîne, liste $ = ce que vous voulez vérifier $ endOfString = ce que vous recherchez

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

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