亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP preg_match 并替換標簽之間的多個實例

PHP preg_match 并替換標簽之間的多個實例

PHP
牛魔王的故事 2022-07-09 16:40:45
抱歉,如果標題有點混亂,很難解釋,所以會盡力而為:)好的,我有一個博客,在后端我希望能夠為帖子中的每個產品添加多個畫廊示例博客:Some Product Title 1blah blah blah blah[Gallery::product_id_01]Some Product Title 2blah blah blah blah[Gallery::product_id_02]所以在這個例子中,有 2 個產品,每個產品都有一個 Gallery 標簽。我希望能夠找到并替換這些示例標簽[Gallery::product_id_01]并[Gallery::product_id_02] 使用實際的圖片庫,這是通過一個名為ProdImgGallery()this 的 php 函數完成的,它傳遞了相同的 ID 示例:product_id_01標簽將始終具有[Gallery::*],但 * 指示的 :: 之后的文本會有所不同,需要從標簽中捕獲以用于下一階段。使用preg_match_all("/\[Gallery::([^\]]*)\]/", $blog_content, $product_id);會按照您的預期找到所有標簽,但我需要用其唯一 ID 指示的正確圖庫替換標簽這是我所能得到的,但這只是根據我找到的所有 id 來獲取每個畫廊,preg_match_all我無法弄清楚如何用相應的畫廊替換每個畫廊//Find all Matches and put in array    preg_match_all("/\[Gallery::([^\]]*)\]/", $blog_content, $product_id);//Count all matches$all_matches = count($product_id[1]);//Loop through themfor($x=0;$x<$all_matches;$x++){echo $product_id[1][$x]."<br>";$prod_img_gallery = ProdImgGallery($product_id[1][$x]);}$blog_content = preg_replace("/\[Gallery::([^\]]*)\]/",$prod_img_gallery,$blog_content);希望這有某種意義,我無法解釋事情,所以請原諒我:) 我也嘗試過搜索,但找不到與我的確切問題相匹配的答案
查看完整描述

1 回答

?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

您可以嘗試使用preg_replace_callback:


$input = "Some Product Title 1

blah blah blah blah

[Gallery::product_id_01]


Some Product Title 2

blah blah blah blah

[Gallery::product_id_02]";


$out = preg_replace_callback(

    "/\[Gallery::(.*?)\]/", function($m) {

                                $val = "[Gallery::" . ProdImgGallery($m[1]) . "]";

                                return $val;

                            },

    $input);

echo $out;

這里的想法是捕獲 的每次出現[Gallery::...],然后將捕獲的組傳遞給回調函數。上面的腳本使用內聯匿名函數進行回調,然后使用該ProdImgGallery()函數返回您想要的替換。


查看完整回答
反對 回復 2022-07-09
  • 1 回答
  • 0 關注
  • 122 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號