Я очистил веб-страницу, и я пытаюсь извлечь данные из td
, у которого нет класса или идентификаторов. Скажем, у меня есть следующий html:
<table>
<tr>
<td>Title</td>
<td>The Harsh Face of Mother Nature</td>
</tr>
.
.
.
</table>
Я пытаюсь сделать preg_match
:
$title = preg_match("\(>Title)(.*?)(?=<\/td\>{2})\", $html);
Моя модель начинается с >Title
а окончание - 2-е вхождение </td>
.
Я работал с https://regex101.com/, чтобы попытаться понять это, но регулярное выражение действительно жесткое! Особенно с темными вещами, которые я пытаюсь выполнить. Любая помощь, пожалуйста? Благодарю!
(ниже). Цель состоит в том, чтобы получить жало: </td><td>The Harsh Face of Mother Nature
затем сделать еще одно предварительное совпадение, чтобы удалить первую часть и получить конечный продукт The Harsh Face of Mother Nature
Попробуйте другой метод: >Title.*?(?=<td>)<td>\K.*?(?=<\/td>)
$re = "/>Title.*?(?=<td>)<td>\\K.*?(?=<\\/td>)/s";
$str = "<table> \n <tr>\n <td>Title</td>\n <td>The Harsh Face of Mother Nature</td>\n <td>The Harsh Face of Mother Nature</td>\n </tr>\n .\n .\n .\n</table>";
preg_match_all($re, $str, $matches);
используйте js n-е дочернее свойство, чтобы получить его
$( "table tr td:nth-child(2)" )
Вы можете попробовать это регулярное выражение .*\<table\>\s*\<tr\>\s*\s*\<td\>title\<\/td>\s*\<td\>((\w*\s*\w*)*)<\/td>.*
В первой группе будет записано содержимое <td>
, следующего за <td>title</td>
, который появляется после <table>
.
Вы можете использовать следующее регулярное выражение в preg_match или preg_match_all
>Title.*?<\/td>.*?<td>\K.*?(?=<\/td>)
$re = "/>Title.*?<\\/td>.*?<td>\\K.*?(?=<\\/td>)/s";
$str = "<table> \n <tr>\n <td>Title</td>\n <td>The Harsh Face of Mother Nature</td>\n </tr>\n .\n .\n .\n</table>";
preg_match_all($re, $str, $matches);