在php中使用正则表达式的不同div标记
html格式:在php中使用正则表达式的不同div标记,php,Php,html格式: <div class="student_information"> <tr> <div class="admin"><td>141201A</td></div> <div class="name"><td>Sally</td></div> <div class="hp"&
<div class="student_information">
<tr>
<div class="admin"><td>141201A</td></div>
<div class="name"><td>Sally</td></div>
<div class="hp"><td>83556112</td></div>
<div class="email"><td>141201A@gmail.com</td></div>
</tr>
我想得到div和td之间的内容。我知道还有其他选择,比如xpath和DOM Document,它们更合适,但是我的项目要求我们在php中使用正则表达式,否则它将影响项目的后期,因此需要任何帮助。谢谢使用php
使用
要删除html标记,请使用(因为它使用regex),如下所示:
<?php
$str = '<div class="student_information">
<tr>
<div class="admin"><td>141201A</td></div>
<div class="name"><td>Sally</td></div>
<div class="hp"><td>83556112</td></div>
<div class="email"><td>141201A@gmail.com</td></div>
</tr>';
preg_match_all('/<td>[a-zA-Z0-9.@]+<\/td>/', $str, $matches);
print_r($matches[0]);
感谢您的帮助,但是我需要使用正则表达式(regex)来获得输出。是否要匹配直接在没有td的div中包含内容的情况,例如:
my content
?我需要没有td的内容,因此即使在这种情况下(我的示例),您仍然需要匹配该div的内容?在这种情况下(你的例子)我仍然需要匹配divAdiv
标记的内容,因为tr
标记的直接子项不是有效的HTML5代码,相反,你可以将你的div放在一个td标记中。你有没有办法以php形式从数据库加载$str(html)?
<?php
$str = '<div class="student_information">
<tr>
<div class="admin"><td>141201A</td></div>
<div class="name"><td>Sally</td></div>
<div class="hp"><td>83556112</td></div>
<div class="email"><td>141201A@gmail.com</td></div>
</tr>';
$strpped = strip_tags ($str);
$strpped = trim(preg_replace('/\s\s+/', ' ', str_replace("\n", " ", $strpped)));
echo $strpped;
?>
141201A
Sally
83556112
141201A@gmail.com
<?php
$str = '<div class="student_information">
<tr>
<div class="admin"><td>141201A</td></div>
<div class="name"><td>Sally</td></div>
<div class="hp"><td>83556112</td></div>
<div class="email"><td>141201A@gmail.com</td></div>
</tr>';
$content = preg_replace('/<[^>]*>/', '', $str);
$content = trim(preg_replace('/\s\s+/', ' ', str_replace("\n", " ", $content)));
$arr = explode(' ', $content);
if (! empty($arr)) {
foreach ($arr as $elem) {
echo $elem . "<br/>";
}
}
?>
141201A
Sally
83556112
141201A@gmail.com
<?php
$str = '<div class="student_information">
<tr>
<div class="admin"><td>141201A</td></div>
<div class="name"><td>Sally</td></div>
<div class="hp"><td>83556112</td></div>
<div class="email"><td>141201A@gmail.com</td></div>
</tr>';
preg_match_all('/<td>[a-zA-Z0-9.@]+<\/td>/', $str, $matches);
print_r($matches[0]);
Array
(
[0] => 141201A
[1] => Sally
[2] => 83556112
[3] => 141201A@gmail.com
)