Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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中使用regex从标记获取值_Php_Regex - Fatal编程技术网

在PHP中使用regex从标记获取值

在PHP中使用regex从标记获取值,php,regex,Php,Regex,在PHP中使用正则表达式如何从这个标记中获取108 <td class="registration">108</td> 108 正则表达式不是解析HTML的好解决方案。改用DOM解析器: $str = '<td class="registration">108</td>'; $dom = new DOMDocument(); $dom->loadHTML($str); $tds = $dom->getElemen

在PHP中使用正则表达式如何从这个标记中获取108

<td class="registration">108</td>
108

正则表达式不是解析HTML的好解决方案。改用DOM解析器:

$str = '<td class="registration">108</td>';    
$dom = new DOMDocument();
$dom->loadHTML($str);      

$tds = $dom->getElementsByTagName('td');
foreach($tds as $td) { 
    echo $td->nodeValue; 
}

上面的代码使用方法加载HTML字符串,查找所有
标记,循环遍历标记,然后回显节点值


如果只想获取特定类名,可以使用:


这与上面的代码类似,只是它使用XPath查找所需的标记。您可以在PHP手册文档中找到有关XPath的更多信息。post应该可以让您开始了。

Regex不是解析HTML的好方法。改用DOM解析器:

$str = '<td class="registration">108</td>';    
$dom = new DOMDocument();
$dom->loadHTML($str);      

$tds = $dom->getElementsByTagName('td');
foreach($tds as $td) { 
    echo $td->nodeValue; 
}

上面的代码使用方法加载HTML字符串,查找所有
标记,循环遍历标记,然后回显节点值


如果只想获取特定类名,可以使用:



这与上面的代码类似,只是它使用XPath查找所需的标记。您可以在PHP手册文档中找到有关XPath的更多信息。post应该可以让您开始了。

如果您想强制使用正则表达式,请使用
如果您想强制使用正则表达式,请使用
从标记中获取它实际上是什么意思?我认为它存储在字符串中,否则它与PHP无关。@Rafael我想使用正则表达式来获取示例中的数字108或任何数据(字母或非字母)td班之间registration@Kaoukkos不要使用正则表达式来解析html。Amal为您的问题提供了一个很好的解决方案。从标记中获取它实际上是什么意思?我认为它存储在字符串中,否则它与PHP无关。@Rafael我想使用正则表达式获取示例中的数字108,或者td类之间的任何数据(字母或非字母)registration@Kaoukkos不要使用正则表达式来解析html。Amal为您的问题提供了一个很好的解决方案谢谢您,但我可能需要使用许多不同的td类。那么,我如何才能针对特定的td类进行更具体的操作呢?@Kaoukkos:这使得使用DOM解析器而不是正则表达式更为合适。DOM解析器是选择特定元素的更好工具;这就是它的用途。如果你试图解析复杂的HTML,正则表达式会烧死你。谢谢你,我会在一段时间内尝试!谢谢,但我可能需要使用很多不同的td类。那么,我如何才能针对特定的td类进行更具体的操作呢?@Kaoukkos:这使得使用DOM解析器而不是正则表达式更为合适。DOM解析器是选择特定元素的更好工具;这就是它的用途。如果你试图解析复杂的HTML,正则表达式会烧死你。谢谢你,我会在一段时间内尝试!谢谢,但我需要具体说明确切的
。不是针对代码中可用的每个td,因为他使用了
^
$
。警告:preg\u match\u all():没有结尾分隔符“^”。。。删除它们。@Kaoukkos您必须使用分隔符在
preg.*
中包装regexp。谢谢您,但我需要为确切的
指定它。不是针对代码中可用的每个td,因为他使用了
^
$
。警告:preg\u match\u all():没有结尾分隔符“^”。。。删除这些。@Kaoukkos您必须使用分隔符在
preg.*
中包装regexp。
$dom = new DOMDocument();
$dom->loadHTML($str);      

$xpath = new DomXPath($dom);

// get the td tag with 'registration' class
$tds = $xpath->query("//*[contains(@class, 'registration')]");

foreach($tds as $td) { 
    echo $td->nodeValue;
}