我在使用PHP方面遇到了一些麻烦,因为我基本上不知道从哪里开始。
我的问题如下:
我有CSGO皮肤名称,如:
★ StatTrak™ Bayonet | Fade (Minimal Wear)
P250 | Modern Hunter (Field-Tested)
Souvenir AUG | Contractor (Factory New)
StatTrak™ Galil AR | Orange DDPAT (Factory New)
现在,我需要一些基本上可以找到以下内容的东西:
Does it contain the star (★)? If so, it's a knife.
Is it StatTrak™?
Is it Souvenir?
The Weapon name (Bayonet, AUG, Galil AR, P250)
The skin name (Contractor, Orange DDPAT, Modern Hunter, Fade)
The wear (Factory New, Battle-Scarred, Field-Tested, Well Worn, Minimal Wear)?
我该怎么做呢?
答案 0 :(得分:0)
对于前三件事,您可以简单地使用一些基本的regular expressions。在这种情况下,它非常简单。例如,如果字符串包含文本/Souvenir/
,您可以使用"Souvenir"
进行匹配,并使用preg_match()
进行测试。
if (preg_match("/Souvenir/", "Souvenir AUG | Contractor (Factory New)"))
echo "It's Souvenir!";
您可以对/StatTrak™/
和/★/
应用完全相同的想法。
对于武器名称,您只需要注意字符串中的位置。如果我们用"|"
吐出字符串,武器总是第一行文字。更进一步,如果有两个单词,武器是第二个单词,而如果有一个单词,武器就是那个单词。一般来说,这将是最后一个词。这是一个例子:
$str = "★ StatTrak™ Bayonet | Fade (Minimal Wear)";
$items = explode("|",$str); // Split by "|"
$words = array_filter(explode(" ",$items[0])); // Split first text by space
$weapon = $words[sizeof($words)-1]; // Get last word in text
echo $weapon;
皮肤名称类似,在这种情况下,它是"|"
之后的第二行文本,但不包括括号内的项目。要从字符串中删除带括号的文本,请参阅this question。
最后,磨损是"|"
之后的第二行文本,是括号内的文本。要确定括号内的文本内容,请参阅this question。
答案 1 :(得分:-1)
您可以搜索preg_match
和regex
。这些都是开始的好点。