php
  • html
  • regex
  • replace
  • preg-replace
  • 2016-03-29 11 views 0 likes 
    0

    PHPで特定のimgタグを置き換える機能を作っています。 しかし...これまではうまくいきません。PHP:preg_replaceで間違ったHTML置換。

    コードは、私が "imgタグ" +への最初の3 "imgタグを" 変更したい

    define('IMG_REG', '/<img.*?>/i'); 
    
    $str = '<p>aaa</p><img src="aaa" > 
    <p>iii</p><img src="aaa" > 
    <p>uuu</p><img src="aaa" > 
    <p>eee</p><img src="aaa" > 
    <p>ooo</p><img src="aaa" >' ; 
    
    $num = 3; 
    
    if (preg_match_all(IMG_REG, $str, $m, PREG_OFFSET_CAPTURE) > $num-1) { 
    
        $target = $m[0][$num-1][0]; 
        $new = $target.'!!!'; 
    
        if($target != NULL): 
         $str = preg_replace($target, $new, $str, $num); 
        endif; 
    } 
    echo $str; 
    

    の下にある "!!!"。

    そう...理想的な結果は、この

    <p>aaa</p><img src="aaa" >!!! 
    <p>iii</p><img src="aaa" >!!! 
    <p>uuu</p><img src="aaa" >!!! 
    <p>eee</p><img src="aaa" > 
    <p>ooo</p><img src="aaa" > 
    

    のようなものです。しかし、いくつかの '< <' &があり

    <p>aaa</p><<img src="aaa" >!!!> 
    <p>iii</p><<img src="aaa" >!!!> 
    <p>uuu</p><<img src="aaa" >!!!> 
    <p>eee</p><img src="aaa" > 
    <p>ooo</p><img src="aaa" > 
    

    のような...実際の結果が '!!!>'。 私は理由を伝えることができません...

    私のマスターになってください!ありがとう。

    +0

    あなたはこれを試すことができます: '定義します。これはhttps://regex101.com/ – Jer

    +0

    ( 'IMG_REG'、 '/ IMGを*/I。?')私にとって非常に素晴らしい情報:)おかげでみんな! – SnakeFoot

    +0

    を助ける' – ya90net

    答えて

    0

    区切り記号を "$ target"正規表現に追加するのを忘れた。

    これを試してみてください:

    define('IMG_REG', '#<img (.*)>#'); 
    
    $str = '<p>aaa</p><img src="aaa" > 
    <p>iii</p><img src="aaa" > 
    <p>uuu</p><img src="aaa" > 
    <p>eee</p><img src="aaa" > 
    <p>ooo</p><img src="aaa" >' ; 
    
    $num = 3; 
    
    if (preg_match_all(IMG_REG, $str, $m, PREG_OFFSET_CAPTURE) > $num-1)  
    { 
    
        $target = $m[0][$num-1][0]; 
        $new = $target.'!!!'; 
        $target = "/".$target."/"; //Delimiters here!!! 
    
        if($target != NULL): 
         $str = preg_replace($target, $new, $str, $num); 
        endif; 
    
    } 
    echo $str; 
    
    +0

    あなたのソリューションは完璧に動作します!本当に感謝しております。ありがとう、私のマスター;) – ya90net

    +0

    あなたは大歓迎です! –

    0
    $str = preg_replace('/<img (.*)>/', "<img $1>!!!", $str, $num); 
    

    ここでは、上記の行に変更します。

    関連する問題