获取data - preilltext属性中的内容


Get The Content In Data-Prefilltext attribute

我用的是PHP HTML代码是这样的

<button style="display:none" id="btnGGPShare0"  class="g-interactivepost" data-contenturl="http://www.tindich.com/18-bi-mat-vuot-thoi-gian-cua-nhung-nguoi-hanh-phuc/" data-clientid="208559429132-h4egkr4jjlagnk8r5jskic4d27oa4n4l.apps.googleusercontent.com" data-cookiepolicy="single_host_origin" data-prefilltext="Chúng ta thường nghe nói rằng sự nổi tiếng chỉ đem lại bất hạnh. Điều này không hề đúng! Vì cùng với một nhóm các nhà khoa học nghiên cứu về hạnh phúc, những người nổi tiếng của mọi thời đại đã cho biết họ có thể  chỉ ra được những bí mật để trở [&hellip;]" data-calltoactionurl="http://www.tindich.com/18-bi-mat-vuot-thoi-gian-cua-nhung-nguoi-hanh-phuc/" data-calltoactiondeeplinkid="/pages/create">

然后我想获得所有的内容之间的双引号data- preilltext 属性。请给我一些解决办法。非常感谢。

我会利用DOM来解析它,并避免使用正则表达式。

$doc = new DOMDocument();
$doc->loadHTML($html);  // Load your html data
$xpath = new DOMXPath($doc);
$node  = $xpath->query("//button[@id='btnGGPShare0']");
echo $node->item(0)->getAttribute('data-prefilltext');

参见工作演示

如果您想从中提取该属性的多个button标记,请使用循环。

$nodes = $xpath->query('//button');
foreach ($nodes as $node) {
   echo $node->getAttribute('data-prefilltext') . "'n";
}

尽管有关于使用regex解析html的所有免责声明,这个简单的regex将完成它(参见演示):

data-prefilltext="'K[^"]*
使用php,您可以这样做(参见在线演示底部的结果):
$regex='~data-prefilltext="'K[^"]*~';
$string = '<button style="display:none" id="btnGGPShare0"  class="g-interactivepost" data-contenturl="http://www.tindich.com/18-bi-mat-vuot-thoi-gian-cua-nhung-nguoi-hanh-phuc/" data-clientid="208559429132-h4egkr4jjlagnk8r5jskic4d27oa4n4l.apps.googleusercontent.com" data-cookiepolicy="single_host_origin" data-prefilltext="Chúng ta thường nghe nói rằng sự nổi tiếng chỉ đem lại bất hạnh. Điều này không hề đúng! Vì cùng với một nhóm các nhà khoa học nghiên cứu về hạnh phúc, những người nổi tiếng của mọi thời đại đã cho biết họ có thể  chỉ ra được những bí mật để trở [&hellip;]" data-calltoactionurl="http://www.tindich.com/18-bi-mat-vuot-thoi-gian-cua-nhung-nguoi-hanh-phuc/" data-calltoactiondeeplinkid="/pages/create>';
if(preg_match($regex,$string,$m)) echo $m[0];

它是如何工作的?

  • 匹配字符串" data- preilltext =" "字面意思(不区分大小写)data-prefilltext="
  • 保持文本匹配到目前为止的整体正则表达式匹配'K
  • 匹配任何非" " " [^"]*的字符
    • 在0到无限次之间,尽可能多的次数,根据需要回馈(贪婪)*

既然你把它标记为regex。将提取上述文本的正则表达式是:

(?<=data-prefilltext=")((?!").)*(?="'s)

我没有PHP的经验。