2012-01-04 11 views
2

イメージとテキストを含むデータベースの結果があります。私は最初のイメージを削除したいと思います。文字列から最初のイメージを削除する方法

例:

$string = 'This is some text and images 
    <img src="http://linktoimage" border="0">, 
    more text and <img src="http://linktoanotherimage"> and so on'; 

私は最初の画像を削除したいと思い、それは常に同じURLではありません。

ありがとうございました。

+0

あなたの文字列は実際には正規であるため、単純な正規表現でこれを実行できます。それを試してください、そしてあなたが立ち往生したときに、これまでに書いたことを投稿してください。 – meagar

答えて

4
$string = 'This is some text and images 
    <img src="http://linktoimage" border="0">, 
    more text and <img src="http://linktoanotherimage"> and so on'; 

print preg_replace('/<img(.*)>/i','',$string,1); 

上記のあなたはそれがあまりにも、スペースや改行で始まる、コンマや改行サフィックス(とあなたがこれらを削除することがあります知っていると仮定すると、

This is some text and images 
, 
    more text and <img src="http://linktoanotherimage"> and so on 

を返す必要があります)、あなたはあなたの

This is some text and images more text and <img src="http://linktoanotherimage"> and so on 
を与えるどの

print preg_replace("/\n <img(.*)>\,\n /i",'',$string,1); 

を行うことができます

+0

実際に傷つけません。私はそれを加えました、ありがとう。 – Slavic

+0

@Slavic大文字小文字を区別するように設定してください(<! - img src = "blah" - >) – kba

+0

私はあなたのことを意味しました:)あなたは必要なテキスト( Slavic

0

は、正規表現の初心者なので、私のような何か、それを避けるために、使用する傾向がある:$i-1および/または$j+1でなければなりません。おそらく

$i = strpos($string,'<img'); 
if ($i !== false) { 
    $j = strpos($string, '>', $i); 
    if ($j !== false) $string = substr($string,0,$i) . substr($string,$j); 
} 

を - 私はそれがあるべきまさに覚えはありません。

+0

恐怖を払い、正規表現を取り入れてください。最後にはもっと幸せになるでしょう。 – KevinDTimm

+0

私は@KevinDTimmを知っています!私のために、クッキーや折りたたみチェアのようなRegExサポートグループはありますか? :-) –

+0

申し訳ありませんが、最初に他のタグがある場合はコードが機能しません。条件は最初のimgタグを削除します。それは唯一の欠点ではありません。 – Slavic

3

あなたはしかし、正規表現は、このために本当に適していません正規表現式を経てそれを行うことができます別のThread

function get_first_image($html){ 
    require_once('SimpleHTML.class.php') 

    $post_dom = str_get_dom($html); 

    $first_img = $post_dom->find('img', 0); 

    if($first_img !== null) { 
     return $first_img->src'; 
    } 

    return null; 
} 

上の偉大な答えがありました。

+1

それどころか、私はhtmlパーサはこのような単純な作業のために残忍であると思う。 – Slavic

+0

私はSlavicに同意します、私は正規表現がこれに完全に適していると思います。 [いいえ、HTMLは標準的な言語ではありません](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags)、これについては巨大なHTMLパーサーをロードするよりもはるかに適しています。 – kba

+0

問題は正しい正規表現文字列を取得していますが、必ずしもhttps://XXX/img.jpgではないことを覚えておいてください。たとえば、<! - img src = "blah" - >それは残忍かもしれませんが、あなたが入力を検証したりスクラブすることができない場合、それが最良の方法かもしれません; –

1
$var = 'This is some text and images 
     <img src="http://linktoimage" border="0">, 
     more text and <img src="http://linktoanotherimage"> and so on'; 

echo preg_replace('/<img.*?>/', '123', $var, 1); 

これはそれを行う必要があります。 ?正規表現でそれをungreedyにすることです。

+0

うまくいった、ありがとう。 –

0

は最後にそれを釘付け:

preg_replace('/<img[\S\s]*?>/i','',$txt,1) 

をこの1つはまた、あなたが持っている可能性がある場合のケースのために働く:

$string = 'This is some text and images 
    <img 
     src="http://linktoimage" border="0">, 
    more text and <img src="http://linktoanotherimage"> and so on'; 

(。タグ内の改行文字)

0

このコードあなたのために働く

$ htmlはあなたが最初に削除したいあなたのHTMLコンテンツ変数ですim年齢タグ。

$str = preg_replace('/(<img[^>]+>)/i','',$html,1); 
関連する問題