所以,我想這是一個非常簡單的概念,但我不確定如何實現我的預期結果。我想要的是用'@'符號開頭的文字,用包含它們的<span>
輸出。子字符串拆分 - PHP
比方說,下面是整個字符串:
馬克希望新的應用程序上週五發布,但一些資產需要細化,使它們貼合主題@design_team。
我將如何捕捉...
@design_team
...子串,銘記不是下劃線其他字符不應該被佔子字符串,以幫助保持格式。
請讓我知道這是否可能與PHP,如果是這樣,如何。
所以,我想這是一個非常簡單的概念,但我不確定如何實現我的預期結果。我想要的是用'@'符號開頭的文字,用包含它們的<span>
輸出。子字符串拆分 - PHP
比方說,下面是整個字符串:
馬克希望新的應用程序上週五發布,但一些資產需要細化,使它們貼合主題@design_team。
我將如何捕捉...
@design_team
...子串,銘記不是下劃線其他字符不應該被佔子字符串,以幫助保持格式。
請讓我知道這是否可能與PHP,如果是這樣,如何。
使用preg_replace
:
$string = preg_replace('/@\w+/', '<span>$0</span>', $string);
\w
匹配單詞字符(字母,數字,下劃線),+
使得它們匹配的序列。並在替換字符串$0
獲取匹配的子字符串。
完美,謝謝Barmar! –
$str = "Mark wants the new app to be released on Friday, but some assets need refining so that they fit the theme @design_team.";
preg_match('/\@[a-zA-Z_]+/', $str, $matches);
print_r($matches);
輸出是
Array
(
[0] => @design_team
)
我知道這會打印出@design_team子字符串,但是我如何將它作爲字符串本身的一部分進行打印,以便它的格式爲:
Mark要...符合主題 @ design_team。
–沒關係,Barmar已經回答了這個解決方案。不管怎樣,謝謝你。 –
您可以使用正則表達式來實現這一目標。這裏有一個例子:
$string = 'Hello @php and @regex!';
$matches = [];
preg_match_all('/@(\w+)/', $string, $matches);
var_dump($matches);
輸出:
array(2) {
[0] =>
array(2) {
[0] =>
string(4) "@php"
[1] =>
string(6) "@regex"
}
[1] =>
array(2) {
[0] =>
string(3) "php"
[1] =>
string(5) "regex"
}
}
延伸閱讀:preg_match_all。
我認爲這將是更容易,如果你有每串多個@words使用正則表達式:
$string = '@Mark wants the new app to be released @Friday, but it needs some @refining';
$didMatch = preg_match_all('/(@[^\W]+)/', $string, $matches);
if($didMatch) {
echo "There were " . count($matches[0]) . " matches: <br />";
print_r($matches[0]);
} else {
echo "No @words in string!\n";
}
你需要使用正則表達式和編寫模式匹配'前綴任何workd @ ' –