ホームページ > バックエンド開発 > PHPチュートリアル > グローバル画像画像を置き換える正規表現を見つけます

グローバル画像画像を置き換える正規表現を見つけます

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-23 13:54:49
オリジナル
1092 人が閲覧しました

如题
现在有一字符串是

$content = '

test

';

想要将这字符里面的 images/tmp 都替换成 images/pub

本人已经写了一个函数

1

public static function replace_img_publish_path($content){      $pattern='/(<[img|IMG].+src=\"?.+)(images\/tmp\/)(.+\.(jpg|gif|bmp|bnp|png)\"?.+>)/';     $replacement="\${1}images/pub/\${3}";       print  preg_replace($pattern, $replacement, $content);      exit;   }

ログイン後にコピー


输出结果为

test



只替换了最后一个img标签

如何才能全部都替换?


回复讨论(解决方案)

1

$content = '<p><img src="http://localhost:8080/story/images/tmp/1403530150545.jpg" style="width: 268px;"><img src="http://localhost:8080/story/images/tmp/1403530147265.jpg" style="width: 268px;">test</p>';$content = preg_replace('#(?<=src="http://localhost:8080/story/images/)tmp/#', 'pub/', $content);echo $content;

ログイン後にコピー

test


你没有防止贪婪匹配。

$pattern='/(<[img|IMG].+?src=\"?.+?)(images\/tmp\/)(.+?\.(jpg|gif|bmp|bnp|png)\"?.+?>)/';

你写的方法加一个参数U就可以了。
加上U,将懒惰匹配 变成 贪婪匹配。

$pattern='/(<[img|IMG].+src=\"?.+)(images\/tmp\/)(.+\.(jpg|gif|bmp|bnp|png)\"?.+>)/ U';

测试例子:

1

$content = '<p><img src="http://localhost:8080/story/images/tmp/1403530150545.jpg" style="width: 268px;"><img src="http://localhost:8080/story/images/tmp/1403530147265.jpg" style="width: 268px;">test</p>';replace_img_publish_path($content);function replace_img_publish_path($content){    $pattern='/(<[img|IMG].+src=\"?.+)(images\/tmp\/)(.+\.(jpg|gif|bmp|bnp|png)\"?.+>)/U';    $replacement="\${1}images/pub/\${3}";    print  preg_replace($pattern, $replacement, $content);    exit;}

ログイン後にコピー


替换后:

test

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート