我有像<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
值。
答案 0 :(得分:2)
如果您要查找<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';
}
请注意,$str
在这种情况下使用substr为false
。
答案 1 :(得分:1)
答案 2 :(得分:1)
无需检查p
代码,因为您只需要{{...}}
内的文字。如果您想在{{..}}
内获取所有价值,请尝试preg_match_all
这样
<?php
$subject="<p>name is {{name}} and age is {{age}}</p>";
preg_match_all('#\{\{(.*?)\}\}#', $subject, $match);
print_r($match[1]);
?>
您将在{{...}}
Array
(
[0] => name
[1] => age
)
答案 3 :(得分:0)
您可以使用strip_tags,然后 preg_replace
$subject="<p>{{name}}</p>";
$pattern="/[^a-zA-Z]/";
$result = preg_replace($pattern, "", strip_tags($subject));
输出将为名称