我有一個字符串,其中包含圖像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) –