簡體   English   中英

Preg_Replace 與 preg_grep

[英]Preg_Replace with preg_grep

我正在嘗試使用 PHP 在腳本標記之前和之后添加代碼

<script>
  hbspt.forms.create({
region: "na1",
portalId: "",
formId: ""
});
</script>

我正在嘗試使用 preg_replace 來實現 preg_grep 來實現它,但我無法在 preg_replace 中使用多個變量,如果我使用數組,它只是輸出數組。

$result = preg_grep("/hbspt\s*([\s\S]*?);/", $matches);
                $before = 'before';
                $after = 'after';
                $final = $before = $after;
                $regexes = '/hbspt\s*([\s\S]*?);/';
                
                
                return preg_replace( $regexes, "before $result after", $buffer );

我哪里出錯了?

我想要的結果

<script>
before

  hbspt.forms.create({
region: "na1",
portalId: "",
formId: ""
});

after
</script>

實現您想要的最簡單方法是:

$before = 'before';
$after  = 'after';
$source = '<script>
  hbspt.forms.create({
region: "na1",
portalId: "",
formId: ""
});
</script>';

echo "<script>\n$before\n" . 
     strip_tags($source) . 
     "\n$after\n</script>";

這導致:

<script>
before

  hbspt.forms.create({
region: "na1",
portalId: "",
formId: ""
});

after
</script>

請參閱PHP fiddlestrip_tags()

或者,但稍微復雜一點,將是:

echo "<script>\n$before\n" . 
     substr($source, 8, -9) . 
     "\n$after\n</script>";

請參閱: PHP Fiddlesubstr()

優點是它不會刪除您的 javascript 中的任何標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM