我需要在<内部获取部分代码ins> 标记来源:
<some tags there and code there><ins class="adsbygoogle"
style="display:inline-block;width:670px;height:100px"
data-ad-client="ca-pub-9438155779940585"
data-ad-slot="1115596158"></ins>bla bla there <tags></tags>
我用谷歌搜索并搜索了所有的stackoverflow几个小时,使用网站https://regexr.com/并且无法做到!
我试过了:
/<ins[.\s]*<\/ins>/ism
/<ins[.|\s]*<\/ins>/ism
/<ins(\w\d\s.)*<\/ins>/ism (i know thats is totally wrong, but i also tried many combos like this)
所有其他百万种组合。什么都没有帮助,请帮助!
答案 0 :(得分:0)
要匹配您想要使用的ins
标记 中的所有内容:
<\s*ins[^>]*>([^<]*)<\s*\/\s*ins\s*>
或者,如果标记为<ins>
,则始终没有id=''
等等。您可以简单地说:
<ins>([^<]*)<\/ins>
这是例如
<ins>
This is
A Match
</ins>
会返回
This is
A Match
REGEX 101上的示例,其中包含匹配<ins id="whatever"></ins>
REGEX 101上的示例,其中包含仅匹配<ins></ins>
答案 1 :(得分:0)
我不确定你真正想要检索哪个部分,所以这里有一个自给自足的测试脚本,其中包括我能想象的所有内容:)。
<?php
$src = <<<SRC
<some tags there and code there><ins class="adsbygoogle"
style="display:inline-block;width:670px;height:100px"
data-ad-client="ca-pub-9438155779940585"
data-ad-slot="1115596158">ins_content</ins>in_between<tags></tags></some>
SRC;
// What's inside <ins> and </ins>
$pattern = '@<ins[^>]*>(.*)</ins>@ium';
preg_match($pattern, $src, $matches);
echo $matches[1].PHP_EOL; // ins_content
// All attribues of the <ins> element
$pattern = '@(<ins([^>]+))@ium';
preg_match($pattern, $src, $matches);
echo $matches[2].PHP_EOL; // class="adsbygoogle" style...
// Everything between </ins> and <tags>
$pattern = '@ins>(.*)<tags@ium';
preg_match($pattern, $src, $matches);
echo $matches[1].PHP_EOL; // in_between