Php 正则表达式声明a';默认值';如果标记为空

Php 正则表达式声明a';默认值';如果标记为空,php,regex,string,Php,Regex,String,我有一个正则表达式,它返回html标记中的任何内容,带有id=“test” 例: 你好,世界 (.*?) 它返回Hello World 如果标签是空的,它应该返回太像 <span id="test"></span> 如果标记为空,则应返回默认值。 我目前不熟悉正则表达式是否有任何正则表达式来驱动此空标记?可能在任何符号之后(.*)您应该添加多个符号 <(.*)id="pStyle"(.*)>(.*)<\/ (.*)> (*) 对我来说,

我有一个正则表达式,它返回html标记中的任何内容,带有
id=“test”

例:

你好,世界
(.*?)
它返回Hello World

如果标签是空的,它应该返回太像

<span id="test"></span>

如果标记为空,则应返回默认值。
我目前不熟悉正则表达式是否有任何正则表达式来驱动此空标记?

可能在任何符号之后
(.*)
您应该添加多个符号

<(.*)id="pStyle"(.*)>(.*)<\/ (.*)>
(*)

对我来说,它工作得很好

我假设您使用了
preg\u match
函数。当存在匹配项时,它将始终返回字符串。如果要在标记为空时返回null,我认为应该添加
If
语句,例如

$string = '<span id="test">Hello World</span>';
$matches = array();
if (preg_match('%<.*?id="pStyle".*?>(.*?)</.*?>%', $string, $matches) {
    if (empty($matches[1])) {
        return null;
    }
    return $matches[1];
}

[^>]*
的意思是:除了

您使用的是什么语言/正则表达式引擎之外,可以使用零个或多个字符?请停止编辑标题。我添加了一个
php
标签。我想出了这个标签,它不会做任何事情`$value='a';$match=array();如果(preg_match('%]*id=“test2”[^>]*>([^%',$html,$match)){$html=str_replace($match[1],$value,$html);}`@Darline是您用
字符串替换标记内文本的目标吗?
$string = '<span id="test">Hello World</span>';
$matches = array();
if (preg_match('%<.*?id="pStyle".*?>(.*?)</.*?>%', $string, $matches) {
    if (empty($matches[1])) {
        return null;
    }
    return $matches[1];
}
<[^>]*id="pStyle"[^>]*>([^<]*)</[^>]*>