6

これは私がこれまでに持っているものですが、私が何をしようとしても、私album-contentはで切り捨てられませんsubstr()

$gallery = preg_replace('/(<div class="album-content">)(.*?)(<\/div>)/e', "'$1' . substr(\"$2\", 0, 50) . '$3'", $gallery);

アップデート:

私のクラス名が間違っていたことが判明し、私の正規表現は機能しているようです。出力をエスケープ解除するには、別のstr_replace()を実行するだけで済みました。

$gallery = preg_replace('/(<div class="album-desc">)(.*?)(<\/div>)/e', "'$1' . substr(\"$2\", 0, 50) . '$3'", $gallery);
$gallery = str_replace('\"album-desc\"', '"album-desc"', $gallery);

変更前の出力:

<a href="..." class="album">
    <div class="album-content"><p class="album-title">Album 1</p>
        <div class="album-desc"><p>This will be truncated by substr().</p></div>
    </div>
    <img src="..." />
</a>

とにかく、みんなありがとう!

4

2 に答える 2

4

使用するpreg_replace_callback()

$replace = preg_replace_callback('/(asd)f/i', function($matches) {
    $matches[1] = substr($matches[1], 0, 2);

    return $matches[1];
}, 'asdf');

完全なドキュメント

于 2013-01-14T19:16:46.237 に答える
0

そうでなければならない

..., "'$1'" . substr("$2", 0, 50) . "'$3'", ...

文字列の「外側」の部分文字列を使用します。

于 2013-01-14T19:17:05.350 に答える