Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 与标记之间的文本匹配的正则表达式,如p a,br_Php_Regex_Preg Match All - Fatal编程技术网

Php 与标记之间的文本匹配的正则表达式,如p a,br

Php 与标记之间的文本匹配的正则表达式,如p a,br,php,regex,preg-match-all,Php,Regex,Preg Match All,我需要一个正则表达式来匹配标记之间的文本,如p a,br: 阿尔伯特·爱因斯坦,普林斯顿分部负责人 普林斯顿大学执行委员会成员 我有一个模式(预匹配所有) $pattern=“/]+>(.*?/” 但它只给出了hrefs中的文本 有什么提示吗?谢谢 //这是样品来源 <p> <a href="file.pdf" target="_blank"><b>Albert Einstein</b></a><br> Di

我需要一个正则表达式来匹配标记之间的文本,如p a,br: 阿尔伯特·爱因斯坦,普林斯顿分部负责人 普林斯顿大学执行委员会成员

我有一个模式(预匹配所有)

$pattern=“/]+>(.*?/”

但它只给出了hrefs中的文本

有什么提示吗?谢谢 //这是样品来源

<p>
    <a href="file.pdf" target="_blank"><b>Albert Einstein</b></a><br>
    Division Head, Princeton<br>
    Member of the Executive Committee of Princeton<br>
    </p>


普林斯顿分部负责人
普林斯顿大学执行委员会成员


使用dom解析器,您可以获得所需标记内的值:

<?php
$html='<p>
    <a href="file.pdf" target="_blank"><b>Albert Einstein</b></a><br>
    Division Head, Princeton<br>
    Member of the Executive Committee of Princeton<br>
    </p>';
$dom = new DOMDocument;
$dom->loadHTML($html);
echo "[".$dom->getElementsByTagName('p')->item(0)->nodeValue."]";

您应该使用HTML解析器。如果你真的想要一个正则表达式,你可以使用:

$html = <<<EOF
<p>
    <a href="file.pdf" target="_blank"><b>Albert Einstein</b></a><br>
     Division Head, Princeton<br>
 Member of the Executive Committee of Princeton<br>
    </p>
EOF;

preg_match_all('%(?:\s+|<b>)([\w ]+)(?:</b>|<br>)%m', $html, $result, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($result[1]); $i++) {
    echo $result[1][$i]."\n";
}

/*
Albert Einstein
Princeton
Member of the Executive Committee of Princeton
*/

$html=尝试改用html解析器。请参阅使用dom解析器,使用dom解析器加载HTML、初始化XPath对象以及执行
foreach($XPath->query('//text()')as$node){echo$node->nodeValue.phpeol;}