PHP - 如何在标记之前获取文本通过preg_match?

时间:2015-02-16 19:27:57

标签: php regex html-parsing preg-match

如何通过preg_match获取(“TEXT”)

$Text ='<input value="AAA" name="A1"> <input value="BBB" name="A2"> <input value="TEXT" name="A3">';

preg_match('!<input value="(.*?)" name="A3">!', $Text, $Word);

echo $Word[1];  //AAA" name="A1"> <input value="BBB" name="A2"> <input value="TEXT

图像:

enter image description here

2 个答案:

答案 0 :(得分:2)

您需要将.*?部分更改为否定的字符类。

"([^"]*)"

但是,您也可以使用DOM来实现这一目标。

$doc = DOMDocument::loadHTML('
     <input value="AAA" name="A1">
     <input value="BBB" name="A2">
     <input value="TEXT" name="A3">
');

$xpath = new DOMXPath($doc);
$match = $xpath->query('//input[@name="A3"]');

echo $match->item(0)->getAttribute('value');

答案 1 :(得分:1)

这很简单:

https://regex101.com/r/tI8vQ1/1

/<input value="(\w*)" name="A3">/