<code>$s= <span class="atwho-inserted" data-atwho-at-query="#">#sayhi</span> aaa <span class="atwho-inserted" data-atwho-at-query="#">#牢骚</span> bbb <span class="atwho-inserted" data-atwho-at-query="#">#test</span> ccc </code>
想要匹配出
<code><span class="atwho-inserted" data-atwho-at-query="#">#sayhi</span> <span class="atwho-inserted" data-atwho-at-query="#">#牢骚</span> <span class="atwho-inserted" data-atwho-at-query="#">#test</span> </code>
这种标签,
于是用:
<code>preg_match_all("/<span class='\"atwho-inserted\"' .>#[a-zA-Z0-9\x{4e00}-\x{9fa5}]+/u", $s, $catspan); </span></code>
匹配出的$catspan是
<code> Array ( [0] => Array ( [0] => <span class="atwho-inserted" data-atwho-at-query="#">#sayhi</span> aaa <span class="atwho-inserted" data-atwho-at-query="#">#牢骚</span> bbb <span class="atwho-inserted" data-atwho-at-query="#">#test</span> ) ) </code>
接下来该怎么办?
<code>$s= <span class="atwho-inserted" data-atwho-at-query="#">#sayhi</span> aaa <span class="atwho-inserted" data-atwho-at-query="#">#牢骚</span> bbb <span class="atwho-inserted" data-atwho-at-query="#">#test</span> ccc </code>
想要匹配出
<code><span class="atwho-inserted" data-atwho-at-query="#">#sayhi</span> <span class="atwho-inserted" data-atwho-at-query="#">#牢骚</span> <span class="atwho-inserted" data-atwho-at-query="#">#test</span> </code>
这种标签,
于是用:
<code>preg_match_all("/<span class='\"atwho-inserted\"' .>#[a-zA-Z0-9\x{4e00}-\x{9fa5}]+/u", $s, $catspan); </span></code>
匹配出的$catspan是
<code> Array ( [0] => Array ( [0] => <span class="atwho-inserted" data-atwho-at-query="#">#sayhi</span> aaa <span class="atwho-inserted" data-atwho-at-query="#">#牢骚</span> bbb <span class="atwho-inserted" data-atwho-at-query="#">#test</span> ) ) </code>
接下来该怎么办?
preg_match_all("/.*>#[a-zA-Z0-9x{4e00}-x{9fa5}]+/u", $s, $catspan);
问题在这个.*
上,正则默认是贪婪匹配,而.
本身就代表所有字符,自然包括>
在内,所以就把后面的内容都匹配进去了。
通过修改为.*?
可以实现非贪婪匹配,这样就能正确结束于>
上,获得你想要的结果。
<code>$pattern = "/\<span>]+\>[^\/";</span></code>
<code class="php">preg_match_all('/<span>]+>#[^/', $s, $catspan);</span></code>
我的正则会这么写:
<code><span class="atwho-inserted">]*?>#[\s\S]*?</span> </code>
不清楚你的写法是什么情况。
Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号