【发布时间】:2014-07-09 00:33:40
【问题描述】:
function extractConnect($str,$connect_type){
$connect_array = array();
$connect_counter = 0;
$str = trim($str).' ';
for($i =0; $i<strlen($str);$i++) {
$chr = $str[$i];
if($chr==$connect_type){ //$connect_type = '#' or '@' etc
$connectword = getConnect($i,$str);
$connect_array[$connect_counter] = $connectword;
$connect_counter++;
}
}
if(!empty($connect_array)){
return $connect_array;
}
}
function getConnect($tag_index,$str){
$str = trim($str).' ';
for($j = $tag_index; $j<strlen($str);$j++) {
$chr = $str[$j];
if($chr==' '){
$hashword = substr($str,$tag_index+1,$j-$tag_index);
return trim($hashword);
}
}
}
$at = extractConnect("#stackoverflow is great. @google.com is the best search engine","@");
$hash = extractConnect("#stackoverflow is great. @google.com is the best search engine","#");
print_r($at);
print_r($hash);
此方法的作用是从字符串中提取# 或@ 并返回这些单词的数组。
例如输入#stackoverflow is great. @google.com is the best search engine 并输出这个
Array ( [0] => google.com ) Array ( [0] => stackoverflow )
但似乎这种方法很慢,有什么替代方法吗?
【问题讨论】:
-
U 可以用所有这些字符(# 或 @..)创建一个数组,然后检查 in_array($characters, $yourArrayWithData);你的方法似乎!!!方式复杂!!!。这是一个想法,现在没有时间写答案。
-
但是@Xatenev 我没有任何特定的字符!可以有任何......我只有
@和# -
@HackerManiac:会是什么角色?
-
是的,所以你只需检查 in_array($characters,$yourstringwithdata) 之后,当它在那里时,你就可以接受这个词
-
@Xatenev #xantev #hackermanic #stackoverflow 等等!
标签: php arrays string hash extract