91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決php中preg_replace_callback回調函數傳參問題

發布時間:2020-12-11 09:43:07 來源:億速云 閱讀:405 作者:小新 欄目:編程語言

小編給大家分享一下如何解決php中preg_replace_callback回調函數傳參問題,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

preg_replace_callback

這個函數的作用是執行一個正則表達式搜索并且使用一個回調進行替換

preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed

參數說明

  • pattern

要搜索的模式,可以是字符串或一個字符串數組。

  • callback

一個回調函數,在每次需要替換時調用,調用時函數得到的參數是從 subject 中匹配到的結果。回調函數返回真正參與替換的字符串。這是該回調函數的簽名:

  • handler ( array $matches ) : string

經常會需要 callback 函數而僅用于 preg_replace_callback() 一個地方的調用。在這種情況下,你可以使用 匿名函數 來定義一個匿名函數作為 preg_replace_callback() 調用時的回調。 這樣做你可以保留所有調用信息在同一個位置并且不會因為一個不在任何其他地方使用的回調函數名稱而污染函數名稱空間。

Example #1 preg_replace_callback() 和 匿名函數

<?php
/* 一個unix樣式的命令行過濾器,用于將段落開始部分的大寫字母轉換為小寫。 */
$fp = fopen("php://stdin", "r") or die("can't read stdin");
while (!feof($fp)) {
    $line = fgets($fp);
    $line = preg_replace_callback(
        '|<p>\s*\w|',
        function ($matches) {
            return strtolower($matches[0]);
        },
        $line
    );
    echo $line;
}
fclose($fp);
?>
  • subject

要搜索替換的目標字符串或字符串數組。

  • limit

對于每個模式用于每個 subject 字符串的最大可替換次數。 默認是 -1(無限制)。

  • count

如果指定,這個變量將被填充為替換執行的次數。

如何傳參

默認情況下,這個回調函數只會接收$matches這個匹配參數,如果想要傳遞更多的參數,我們可以采用迂回戰術,正所謂條條大路通羅馬,我們只要能在匿名函數中訪問到需要傳遞的參數就行。于是我們有兩個辦法。

1.使用全局變量

$param1 = "test";
preg_replace_callback($pregRule, function ($match) {
    global $param1;
    return $match[1] . $param1 . $match[3];
}

2.使用面向對象加載類

class Scrapy{
   private $param1 = "test";
   public function info(){
      preg_replace_callback($pregRule, function ($match) {
            return $match[1] . $this->param1 . $match[3];
        }
   }
}

通過上面的兩種方法我們就可以在回調函數中調用我們想要傳入的參數。

看完了這篇文章,相信你對如何解決php中preg_replace_callback回調函數傳參問題有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平顺县| 越西县| 保亭| 天水市| 九江市| 崇阳县| 乌海市| 柳林县| 怀集县| 全南县| 盈江县| 博爱县| 夏邑县| 简阳市| 昌图县| 金川县| 牟定县| 思茅市| 长阳| 竹山县| 旬邑县| 托克逊县| 余庆县| 平凉市| 曲沃县| 阿坝县| 黄石市| 萨嘎县| 得荣县| 绍兴市| 华池县| 喀喇| 凤城市| 同德县| 祁阳县| 芜湖县| 金门县| 锡林郭勒盟| 宁夏| 张家川| 娱乐|