我有波纹管字符串
.progressbar li:before {
content: counter(step);
counter-increment: step;
position: relative;
width: 40px;
height: 40px;
border: 1px solid #ffffff;
display: block;
text-align: center;
margin: 0 auto 10px auto;
border-radius: 50%;
line-height: 40px;
background-color: #a697a8;
color: #ffffff;
z-index: 1052;
}
.progressbar li:after {
content: '';
position: absolute;
width: 100%;
height: 14px;
top: 13px;
left: -50%;
z-index: 1051;
background-size: 35px 35px;
background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);
background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);
-webkit-box-shadow: inset 2px 2px 2px 0px rgba(0, 0, 0, 0.2);
box-shadow: inset 2px 2px 2px 0px rgba(0, 0, 0, 0.2);
background-color: #a697a8;
}
,我想从上面的字符串中提取$LINE = TCNU1573105 HDPE HTA108 155 155 000893520918 PAL990 25.2750 MT 28.9750 MT
。实际上会提取PAL990字符串或任何包含PAL的字符串,后跟一些数字,例如PAL222或PAL123
我尝试了很多方法,但没有得到结果。我用过,
PAL990
但是当值在不同位置时,我得到了错误的值。
答案 0 :(得分:1)
您可以使用
$LINE = "TCNU1573105 HDPE HTA108 155 155 000893520918 PAL990 25.2750 MT 28.9750 MT";
if (preg_match('~\bPAL\d+\b~', $LINE, $res)) {
echo $res[0]; // => PAL990
}
详细信息
\b
-单词边界PAL
-一个PAL
子字符串\d+
-1个以上数字\b
-单词边界。 preg_match
function将返回第一个匹配项。
请注意,如果您的字符串在连字符/空格之间包含相似的字符串,则您将不再能够依赖单词边界,请使用自定义空格边界,即:
'~(?<!\S)PAL\d+(?!\S)~'
编辑
如果您在PAL
和数字之间有一个可选的空格,则可以使用
preg_replace('~.*\b(PAL)\s?(\d+)\b.*~s', '$1$2', $LINE)
请参见this PHP demo和this regex demo。
或者,将所需的字符串与空格匹配,然后将其删除:
if (preg_match('~\bPAL ?\d+\b~', $LINE, $res)) {
echo str_replace(" ", "", $res[0]);
}
请注意,?
使前面的模式为可选(匹配1或0个匹配项)。
答案 1 :(得分:0)
$string = "123ABC1234 *$%^&abc.";
$newstr = preg_replace('/[^a-zA-Z\']/','',$string);
echo $newstr;
输出:ABCabc