3 回答
TA贡献1828条经验 获得超3个赞
这应该是它.. [*] 匹配 * 字符而 .*> 匹配任何直到 > 字符
if (substr_count($value, '*<span') > 0) {
$value = preg_replace('/[*].*>/', '', $value);
}
TA贡献1895条经验 获得超7个赞
如果一切都遵循此模式,则不需要正则表达式,只需在 * 上爆炸并使用第一个元素。
foreach( $array as $key => $value ){
$array[$key] = explode('*',$value)[0];
}
您的示例的结果:
array(4) {
[0]=>
string(3) "1.5"
[1]=>
string(3) "3.7"
[2]=>
string(3) "8.0"
[3]=>
string(3) "4.2"
}
编辑 如果标签后有“其他东西”,则需要多做一些工作
$array = [
'1.5',
'3.7',
'8.0*<span class="exception">some text</span>',
'4.2*<span class="exception">some text</span>then other stuff'
];
foreach( $array as $key => $value ){
$sub = explode('*',$value);
$end = [];
if(count($sub) > 1) {
$end = explode('>',end($sub));
}
$array[$key] = trim($sub[0] . ' ' . end($end));
}
结果:
array(4) {
[0]=>
string(3) "1.5"
[1]=>
string(3) "3.7"
[2]=>
string(3) "8.0"
[3]=>
string(20) "4.2 then other stuff"
}
- 3 回答
- 0 关注
- 81 浏览
添加回答
举报