【问题标题】:PHP - How Get text before tag By preg_match?PHP - 如何通过 preg_match 在标签前获取文本?
【发布时间】:2015-04-17 09:43:54
【问题描述】:

如何通过 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

图片:

【问题讨论】:

标签: php regex html-parsing preg-match


【解决方案1】:

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

"([^"]*)"

不过,您也可以使用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');

【讨论】:

  • Lingo nitpick:DOM 不是解析器。解析器是 libxml。 DOM 只是节点树的一个遍历 API。
【解决方案2】:

就这么简单:

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

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

【讨论】:

    猜你喜欢
    • 2013-12-01
    • 1970-01-01
    • 2015-11-02
    • 2018-12-30
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    相关资源
    最近更新 更多