我有一个字符串,其中包含图像ID和一个数组,其中包含旧图像ID和新图像ID的值。php使用数组中的值替换所有字符串发生
我需要搜索旧的内容并用新的替换。
我做这个
<?php
$string = 'Lorem ipsum dolor sit amet, image="150" consectetur adipisicing elit. Porro voluptatibus omnis nulla quis mollitia dicta quasi voluptatum totam,
labore doloremque ea fugit consectetur, itaque, ab et odio, est iusto recusandae suscipit? Dignissimos veniam recusandae, magnam, dolor omnis, image="6"
eveniet laboriosam quas culpa voluptate at officia in natus repellendus assumenda beatae illo repudiandae earum necessitatibus fugit,
quo error. <span style="padding-top:150px">Esse minima</span>, aut architecto, doloribus quos veritatis reprehenderit.
Temporibus vitae voluptatibus ea ad similique perspiciatis sed doloribus explicabo error asperiores ab, id aspernatur image="235" eum ducimus magni rerum veniam voluptates, ipsum voluptatum repudiandae dolorum quisquam voluptatem.
Doloribus nulla voluptate architecto ipsam sed voluptas, maiores rem sequi eos voluptatum iusto rerum odio sapiente sunt minima, image="65" consequuntur aliquid dolor impedit hic. Beatae perspiciatis, incidunt necessitatibus
voluptas earum cumque, in asperiores id ipsum ducimus veritatis laboriosam eveniet ipsa accusamus! Nulla quasi porro sunt suscipit quibusdam velit
itaque, voluptates, soluta quaerat consectetur eos doloribus, fugiat quisquam. Quos, ad, dolorum.
';
$array = array(
'150' => 4025,
'6' => 4026,
'235' => 4027,
'65' => 4028,
);
preg_match_all('/image=\"(\d+)\"/', $string, $matches_image);
if ('' !== $matches_image[1] && ! empty($matches_image[1])) {
foreach ($matches_image[1] as $key => $matched_image_id) {
if (array_key_exists($matched_image_id, $array)) {
$string = str_replace($matched_image_id, $array[ $matched_image_id ], $string);
}
}
}
但如果你print_r
的$string
你会发现,它取代了ID的每次出现(因为它应该),但也将取代顶部填充在跨度(例如)。所以在最后我得到了4025px的顶部填充,这是不好的:D
我想首先用正确的ID替换匹配的数组,找到整个匹配的模式(image='150'
),然后匹配替换后的值内容。
但我卡住了。
*但是这也将取代a中的顶部填充跨度* - 无法重现。我刚刚测试了你的代码,它在其他文本中输出了'' – RomanPerekhrest
@RomanPerekhrest我在http://sandbox.onlinephpfunctions.com/中测试了它,并将填充替换为[图片](http://imgur.com/a/RIA6a) –