1

HTMLテキスト内のすべての画像からすべてのsrc属性を検索し、条件付きの変更を加えた後、見つかったすべてのsrcをテキストに置き換える単純なphpスクリプトを作成しようとしています。

このようなもの:

@preg_match_all('/<img\s src="([a-zA-Z0-9\.;:\/\?&=_|\r|\n]{1,})"/isxmU', $body, $images);

$images 変数にすべての src を入れたので、次のようにします。

foreach ($images as $img) {
    ..my changes here..
}

そして今...どうすれば変更されたsrcを$body変数に戻すことができますか??

よろしくお願いします。

4

6 に答える 6

5

を調べる必要がありますpreg_replace_callback()。これにより、コールバック関数を使用して、好きなように各一致を後処理できます。(それpreg_match_all()に加えてではなく、代わりに使用します。)

于 2009-09-01T15:23:34.653 に答える
4

代わりに HTML DOM パーサーを使用してください。使用と保守がはるかに簡単ですhttp://simplehtmldom.sourceforge.net/

于 2009-09-01T15:40:04.417 に答える
1

昨日、HTML ファイルを変更およびトラバースするための優れたインターフェイスについて質問しました。あなたはこれに興味があるかもしれません:

PHP への jQuery ポート

すでに jQuery の API に精通している場合は、これが良い代替手段になる可能性があります。

于 2009-09-02T17:41:43.323 に答える
0

不適切な形式の HTML を処理する必要がある場合は、非検証パーサーの方が優れている場合があります。

http://pear.php.net/package/XML_HTMLSax3

于 2009-09-01T15:54:38.520 に答える
-1

あなたが探している最も簡単な答えは、str_replace を実行することだと思います。

foreach ($images as $img) {
    ..my changes here..
    $body = str_replace($original_string, $modified_string, $output_body);
}
于 2009-09-01T15:28:32.443 に答える
-2

あなたが使いたいのは何preg_replaceですか?e修飾子を使用すると、置換テキストが' d になるため、ループevalで行ったのと同じことを置換対象のテキストに対して実行する関数を使用できます。foreach

編集:で修飾子をpreg_replace_callback使用するよりもクリーンです。私の anser を書いている間はそれについて考えていなかったので、混沌とした答えの方が優れています。epreg_replace

于 2009-09-01T15:25:27.957 に答える