0

ここに私の preg_replace パターン正規表現コード..

/<img(.*?)src="(.*?)"/

これは私の交換コードです..

<img$1src="'.$path.'$2"

だから私は条件を否定/除外したい..imgタグにrel="customimg"がある場合、 preg_replace をスキップする..

例: この行をスキップ

<img rel="customimg" src="http..">

この正規表現パターンに何が追加される可能性がありますか?

別の投稿を検索しましたが、正確にはわかりませんでした..

4

4 に答える 4

1

否定先読みを追加します。

/<img(?![^>]*\srel="customimg")(.*?)src="(.*?)"/
于 2012-10-23T20:28:48.507 に答える
1

引数には一重引用符または二重引用符を使用できるためsrc、使用することをお勧めします

preg_replace(
  "/(<img\b(?!.*\brel=[\"']customimg[\"']).*?\bsrc=)([\"']).*?\2/i",
  "$1$2" . $path . "$2",
  $string);

編集:

完全な URL 置換の代わりに URL プレフィックスを追加するには、次を使用します。

preg_replace(
  "/(<img\b(?!.*\brel=[\"']customimg[\"']).*?\bsrc=)([\"'])(.*?)\2/i",
  "$1$2" . $path . "$3$2",
  $string);
于 2012-10-23T20:48:04.330 に答える
1

入ってくる正規表現の「ソリューション」しか表示されないためです。DOMDocumentを使用した回答は次のとおりです。

<?php
$path = 'the/path';

$doc = new DOMDocument();
@$doc->loadHTML('<img rel="customimg" src="/image.jpgm"><img src="/image.jpg">');
$xpath = new DOMXPath($doc);
$imageNodes = $xpath->query('//img[not(@rel="customimg")]');

foreach ($imageNodes as $node) {
    $node->setAttribute('src', $path . $node->getAttribute('src'));
}

デモ: http://codepad.viper-7.com/uID5wz

于 2012-10-23T20:55:26.863 に答える
0

より簡単に/より表現力豊かにできるようです

if(strpos($haystackString, '"customimg"') === false) // The === is important
{
 // your preg_replace here
}

編集:欠落しているパラムの人を指摘してくれてありがとう

于 2012-10-23T20:30:04.337 に答える