如何在給定文本中的另一個單詞之前或之後獲得單個單詞。 例如:在另一個單詞之前或之後獲取單個單詞
Text = "This is Team One Name"
,以及如果存在例如中間字之前沒有文字,但digites
Text= "This is 100 one Name"
我怎樣才能得到100
?
如何獲取One
之前和之後的單詞Team
和Name
?任何正則表達式模式匹配?
如何在給定文本中的另一個單詞之前或之後獲得單個單詞。 例如:在另一個單詞之前或之後獲取單個單詞
Text = "This is Team One Name"
,以及如果存在例如中間字之前沒有文字,但digites
Text= "This is 100 one Name"
我怎樣才能得到100
?
如何獲取One
之前和之後的單詞Team
和Name
?任何正則表達式模式匹配?
這應做到:
function get_pre_and_post($needle, $haystack, $separator = " ") {
$words = explode($separator, $haystack);
$key = array_search($needle, $words);
if ($key !== false) {
if ($key == 0) {
return $words[1];
}
else if ($key == (count($words) - 1)) {
return $words[$key - 1];
}
else {
return array($words[$key - 1], $words[$key + 1]);
}
}
else {
return false;
}
}
$sentence = "This is Team One Name";
$pre_and_post_array = get_pre_and_post("One", $sentence);
<?php
$Text = "This is Team One Name";
$Word = 'Team';
preg_match('#([^ ]+\s+)' . preg_quote($Word) . '(\s[^ ]+)#i', $Text, $Match);
print_r($Match);
你忘了匹配'$ Word'周圍的空格。另外'U'會搞砸你的結果(在第二個單詞中只會有一個字符)。只是把它留下。無論如何,這是令人困惑的。如果你想要不誠實,請使用'+?'(但正如我所說的,你甚至不想在這裏不太認真) –
謝謝!我被編輯了 – Winston
+1不使用正則表達式! –
@DavidBélanger我希望有人會注意到:) – n1te
完美!與PHP工作順利,應該很容易轉換成其他語言,非常漂亮的代碼,不使用正則表達式,這節省了一些頭痛! –