我想從字符串拆分單詞。例如,我的字符串是「在上帝的#名稱」,我只需要「名稱」! 但是當我使用這個snipet,還給我 「上帝的名字」Php - 通過在字符串中爆炸拆分特定字
$string = "In the #name of god";
$word = explode('#', $string);
echo $word;
我想從字符串拆分單詞。例如,我的字符串是「在上帝的#名稱」,我只需要「名稱」! 但是當我使用這個snipet,還給我 「上帝的名字」Php - 通過在字符串中爆炸拆分特定字
$string = "In the #name of god";
$word = explode('#', $string);
echo $word;
$string = "In the #name of god";
// Using `explode`
$word = @reset(explode(' ', end(explode('#', $string))));
echo $word; // 'name'
// Using `substr`
$pos1 = strpos($string, '#');
$pos2 = strpos($string, ' ', $pos1) - $pos1;
echo substr($string, $pos1 + 1, $pos2); // 'name'
注:
reset
函數之前@
字符是Error Control Operators。當使用帶有非參考變量的end
函數時,它避免顯示警告消息,並且是的,這是不好的做法。您應該創建自己的變量並傳遞給end
函數。就像這樣:
// Using `explode`
$segments = explode('#', $string);
$segments = explode(' ', end($segments));
$word = reset($segments);
echo $word; // 'name'
對不起,我只是readed是錯誤的。
Explode將字符串轉換爲數組。 所以你的輸出會導致[「在」,「神的名字」]。如果你想聽到它的話,你需要更具體地說明它如何工作。如果你只想要在標籤後面看到第一個單詞,你應該使用strpos和substr。
$string = "In the #name of god";
$hashtag_pos = strpos($string, "#");
if($hashtag_pos === false)
echo ""; // hashtag not found
else {
$last_whitespace_after_hashtag = strpos($string, " ", $hashtag_pos);
$len = $last_whitespace_after_hashtag === false ? strlen($string)-($hashtag_pos+1) : $last_whitespace_after_hashtag - ($hashtag_pos+1);
echo substr($string, $hashtag_pos+1, strpos($string, " ", $len));
}
這絕對不會返回'名稱' –
行動,我真的錯過了那部分。我在做這個工作。 –
@Daan修復它。 –
嘗試正則表達式和preg_match
$string = "In the #name of god";
preg_match('/(?<=#)\w+/', $string, $matches);
print_r($matches);
輸出:
Array ([0] => name)
這也返回一個數組?在 – RiggsFolly
這個問題中請求了一個字符串@RiggsFolly是的,但'$ matches [0]'將會有必需的字符串,並且複雜度非常小。 –
也會建議使用'preg_match_all'來獲得所有的發生 – knetsi
有幾個選項(還的preg_match將有助於爲 '#' 的多個實例)
<?php
//With Explode only (meh)
$sen = "In the #name of god";
$w = explode(' ', explode('#',$sen)[1])[0];
echo $w;
//With substr and strpos
$s = strpos($sen , '#')+1; // find where # is
$e = strpos(substr($sen, $s), ' ')+1; //find i
$w = substr($sen, $s, $e);
echo $w;
//with substr, strpos and explode
$w = explode(' ', substr($sen, strpos($sen , '#')+1))[0];
echo $w;
'$ word'是數組,當您回顯它時,您將看不到'name of god' –
您正在使用導出錯誤的上下文。 'explode()'函數將一個字符串分解成一個數組。 – webpic
@u_mulder,Array([0] =>在[1] =>上帝的名字) – Ehsan