簡體   English   中英

PHP preg_match之間獲取內容

[英]PHP preg_match get content between

<!--:en-->Apvalus šviestuvas<!--:-->
<!--:ru-->Круглый Светильник<!--:-->
<!--:lt-->Round lighting<!--:-->

我需要獲取<!--:lt--><!--:-->

我努力了:

$string  = "<!--:en-->Apvalus šviestuvas<!--:--><!--:ru-->Круглый Светильник<!--:--><!--:lt-->Round lighting<!--:-->";
preg_match('<!--:lt-->+[a-zA-Z0-9]+<!--:-->$', $string, $match);

var_dump($match);

語法和邏輯有問題。 我怎樣才能做到這一點?

preg_match("/<!--:lt-->([a-zA-Z0-9 ]+?)<!--:-->/", $string, $match);
  • 增加了分隔符
  • 添加了一個匹配組
  • 補充說? 使它不合適
  • 添加[space]Round lighting有空格)

你的結果應該是$match[1]


更酷,更通用的變體是:

preg_match_all("/<!--:([a-z]+)-->([^<]+)<!--:-->/", $string, $match);

這將匹配所有這些。 得到:

array(3) { [0]=> array(3) { [0]=> string(37) "Apvalus šviestuvas" [1]=> string(53) "Круглый Светильник" [2]=> string(32) "Round lighting" } [1]=> array(3) { [0]=> string(2) "en" [1]=> string(2) "ru" [2]=> string(2) "lt" } [2]=> array(3) { [0]=> string(19) "Apvalus šviestuvas" [1]=> string(35) "Круглый Светильник" [2]=> string(14) "Round lighting" } }

使用此模式(?<=<!--:lt-->)(.*)(?=<!--:-->)

<?php
$string  = "<!--:en-->Apvalus šviestuvas<!--:--><!--:ru-->Круглый Светильник<!--:--><!--:lt-->Round lighting<!--:-->";
preg_match('~(?<=<!--:lt-->)(.*)(?=<!--:-->)~', $string, $match);

var_dump($match);

暫無
暫無

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

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