Regex(PHP): Avoid Capturing a certain word list
Regex(PHP): Avoid Capturing a certain word list
如果我们采用这样的文本
<p>Portable <span class="shlt">Adobe</span> <span class="shlt">After</span>
<span class="shlt">Effects</span> CC <span class="shlt">2018</span> 15.1.1.12 (x64)</p>
那些 <span class="shlt"></span>
标签之间有单词。我只需要捕获标题!
(可以清楚的看到里面有Portable Adobe After Effects CC 2018 15.1.1.12 (x64))
是否可以避免捕获 <span class="shlt">
和 </span>
部分?
并且仅捕获 Portable Adobe After Effects CC 2018 15.1.1.12 (x64) 文本?
我目前正在尝试做的是捕获这些标签之间的单词。有没有更好的办法!示例正则表达式代码将很有用。在PHP请...
您可以使用 () 在正则表达式中捕获组。然后就可以解析出数组了。
这是一个例子。
$re = '/\<span class="shlt">([^<]*)<\/span>/m';
$str = 'Portable <span class="shlt">Adobe</span> <span
class="shlt">After</span> <span class="shlt">Effects</span> CC <span
class="shlt">2018</span> 15.1.1.12 (x64)';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
这将删除 span 标签
$str = 'Portable <span class="shlt">Adobe</span> <span
class="shlt">After</span> <span class="shlt">Effects</span> CC <span
class="shlt">2018</span> 15.1.1.12 (x64)';
preg_replace("/<\/?span[^>]*>/", "", $str);
echo $str;
您可以使用 DOMDocument and use getElementsByTagName 来查找您的 <p>
元素,而不是使用正则表达式。
然后从结果中取出第一个匹配得到 textContent:
$dom = new DOMDocument();
$dom->loadHTML($data);
echo $dom->getElementsByTagName("p")[0]->textContent;
那会给你:
Portable Adobe After Effects CC 2018 15.1.1.12 (x64)
如果我们采用这样的文本
<p>Portable <span class="shlt">Adobe</span> <span class="shlt">After</span>
<span class="shlt">Effects</span> CC <span class="shlt">2018</span> 15.1.1.12 (x64)</p>
那些 <span class="shlt"></span>
标签之间有单词。我只需要捕获标题!
(可以清楚的看到里面有Portable Adobe After Effects CC 2018 15.1.1.12 (x64))
是否可以避免捕获 <span class="shlt">
和 </span>
部分?
并且仅捕获 Portable Adobe After Effects CC 2018 15.1.1.12 (x64) 文本?
我目前正在尝试做的是捕获这些标签之间的单词。有没有更好的办法!示例正则表达式代码将很有用。在PHP请...
您可以使用 () 在正则表达式中捕获组。然后就可以解析出数组了。
这是一个例子。
$re = '/\<span class="shlt">([^<]*)<\/span>/m';
$str = 'Portable <span class="shlt">Adobe</span> <span
class="shlt">After</span> <span class="shlt">Effects</span> CC <span
class="shlt">2018</span> 15.1.1.12 (x64)';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
这将删除 span 标签
$str = 'Portable <span class="shlt">Adobe</span> <span
class="shlt">After</span> <span class="shlt">Effects</span> CC <span
class="shlt">2018</span> 15.1.1.12 (x64)';
preg_replace("/<\/?span[^>]*>/", "", $str);
echo $str;
您可以使用 DOMDocument and use getElementsByTagName 来查找您的 <p>
元素,而不是使用正则表达式。
然后从结果中取出第一个匹配得到 textContent:
$dom = new DOMDocument();
$dom->loadHTML($data);
echo $dom->getElementsByTagName("p")[0]->textContent;
那会给你:
Portable Adobe After Effects CC 2018 15.1.1.12 (x64)