我正在使用 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-prefilltext 属性的双引号之间的所有内容。
请为此建议我一些解决方案。太感谢了。

最佳答案

有了关于使用正则表达式解析 html 的所有免责声明,这个简单的正则表达式就可以做到(参见 demo ):

data-prefilltext="\K[^"]*

使用 php,您可以执行以下操作(请参阅 online demo 底部的结果):
$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-prefilltext="”(不区分大小写) data-prefilltext="
  • 保持文本匹配到目前为止的整体正则表达式匹配 \K
  • 匹配任何不是“””的字符 [^"]*
  • 在零次和无限次之间,尽可能多次,根据需要回馈(贪婪) *
  • 关于php - 获取 Data-Prefilltext 属性中的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23905039/

    10-12 07:27