簡體   English   中英

以PHP Regex開頭和結尾

[英]Starts and Ends with PHP Regex

好的,我有以下代碼將大字符串的某些部分替換為某些內容

     $string = 'this <task>post</task> was a <post>post item</post> 
before but now this is now a <task>task item</task> 
and will become like <task>this one</task>';

         $pattern = '^<task>*</task>$';
         $datainmiddle = preg_replace($pattern, $replacement, $string);
         $replacement = strlen(datainmid);
         //I have no idea what to do next...(ノД`)・゜・。

現在我想在這里做的事情如下

  1. 我想抓取以<task>開頭和</task>結束的字符串中的每個子字符串
  2. 對於每個抓取的子字符串,我想抓取<task></task>中間的所有數據
  3. 在標記中間我獲取的每個數據中,我想使用strlen來衡量它們的長度
  4. 現在,我想將每個以<task>開頭並以</task>結尾的子字符串替換為中間的字符串長度。

輸出必須是這樣的

這個4以前是9,但現在現在是9,將變成8

如果您發現它令人困惑。 請告訴我

好吧,很簡單:

preg_replace('#<task>(.*?)</task>#e', "strlen('\\1')", $str);

正則表達式使用(.*?)來啟動一種內存模式,稍后我將其用於傳遞給strlen()

我正在使用.*? 表示非貪婪匹配(否則,它匹配第一個<task>和最后一個</task>

e修飾符用於評估第二個參數preg_replace 這樣就可以在對表達式進行整體評估以返回字符串長度之前在表達式中寫入'\\\\1'

希望解釋對理解解決方案有所幫助。

暫無
暫無

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

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