[英]how to extract a certain digit from a String using regular expression in php?
[英]How can I extract string using Php regular expression
我有類似<p>{{name}}</p>
這樣的字符串,並且嘗試了以下代碼:
$subject="<p>{{name}}</p>";
$pattern="/(\[\[|<p>{{)\w+(]]|}}</p>)/";
$success = preg_match($pattern, $subject, $match);
if ($success) {
$str = substr($match[0], 5,-2);
echo $str;
} else {
echo 'not match';
}
如何使用正則表達式函數提取name
值。
如果您要在<p>
標記之間以及雙大括號{{}}之間尋找名稱,則也可以這樣:
說明
<p>{{
\\K
(?=}}<\\/p>)
斷言其后是}}</p>
您可以使用preg_match_all查找所有匹配項,或使用preg_match返回第一個匹配項。
您的代碼可能如下所示:
$subject="<p>{{name}}</p>";
$pattern="/<p>{{\K.+?(?=}}<\/p>)/";
$success = preg_match($pattern, $subject, $match);
if ($success) {
$str = substr($match[0], 5,-2);
echo $str;
} else {
echo 'not match';
}
請注意,在這種情況下,使用substr將$str
為false
。
嘗試將模式與捕獲組一起使用,以隔離所需的名稱:
subject="<p>{{name}}</p>";
$pattern="/<p>\{\{([^}]+)\}\}<\/p>/";
$success = preg_match($pattern, $subject, $match);
if ($success) {
echo $match[1];
} else {
echo 'not match';
}
無需檢查p
標記,因為您只想在{{...}}
內輸入文本。如果要在{{..}}
內獲取所有值,請嘗試preg_match_all
這樣
<?php
$subject="<p>name is {{name}} and age is {{age}}</p>";
preg_match_all('#\{\{(.*?)\}\}#', $subject, $match);
print_r($match[1]);
?>
現場演示: https : //eval.in/929064
您將在{{...}}
獲得值數組
Array
(
[0] => name
[1] => age
)
您可以使用strip_tags然后使用preg_replace
$subject="<p>{{name}}</p>";
$pattern="/[^a-zA-Z]/";
$result = preg_replace($pattern, "", strip_tags($subject));
輸出將是名稱
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.