2017-01-16 34 views
0

您好我是新來的PHP的選擇,我需要一點點幫助從PHP字符串

我需要改變就是**之間的PHP字符串文本,並把它的HTML標記

 

$text = "this is an *example*"; 

之間

但我真的不知道該怎麼和我需要幫助

+0

您應該使用[PHP DOM解析器](http://simplehtmldom.sourceforge.net/)。 –

+1

如果答案解決了您的問題,請考慮接受答案。以下是http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work然後返回到此處,並使用勾號/複選標記執行相同操作,直至變爲綠色。這告知社區,找到了解決方案。否則,其他人可能會認爲這個問題仍然存在,並且可能需要發佈(更多)答案。您將獲得積分,其他人將被鼓勵幫助您。 *歡迎使用堆棧!* –

回答

2

個人而言,我會用爆炸,那麼你就可以拼湊句一起回來,如果例如出現在一個句子的中間

<?php 
$text = "this is an *example*"; 
$pieces = explode("*", $text); 
echo $pieces[0]; 
?> 

編輯:

既然你要找的東西基本上相當於定製BB代碼中使用此

$text = "this is an *example*"; 
$find = '~[\*](.*?)[\*]~s'; 
$replace = '<span style="color: green">$1</span>'; 
echo preg_replace($find,$replace,$text); 

您可以將它添加到一個函數,並將它解析被傳遞到任何文本它,你也可以找到並替換變量到數組中,並添加更多的代碼

+0

那是給我的文字之間(*)我想輸出整個文本字符串,但之間(*)的文本HTML內標籤 – azjezz

+0

'<?PHP $文字=「這是一個*例*」; $ pieces = explode(「*」,$ text); echo $ pieces [0]。「」。$ pieces [1]。「」; ?> 應該輸出中間的文字 –

+0

工作完美,但我需要更多的幫助,如果*不存在他不會改變任何東西 – azjezz

3

你真的應該使用DOM解析器來處理這樣的事情,但是如果你能保護它,它將永遠是你可以使用的*字符一些正則表達式:

$text = "this is an *example*"; 
$regex = '/(?<=\*)(.*?)(?=\*)/'; 
$replacement = 'ostrich'; 
$new_text = preg_replace($regex, $replacement, $text); 
echo $new_text; 

返回

this is an *ostrich* 

這裏是正則表達式是如何工作的:

Positive Lookbehind (?<=\*) 
    \* matches the character * literally (case sensitive) 

1st Capturing Group (.*?) 
    .*? matches any character (except for line terminators) 
    *? Quantifier — Matches between zero and unlimited times, as few times as possible, expanding as needed (lazy) 

Positive Lookahead (?=\*) 
    \* matches the character * literally (case sensitive) 

此正則表達式本質出發,通過看什麼是前方和搜索字符後面結束您指定並在preg_replace()替換過程中保留這些字符完好無損。

+0

這不是我所確切的想要... – azjezz

+0

你想要什麼?你說*「我需要改變**和這個之間的文本,這樣做。 –

+0

我需要的是將**之間的文本放在HTML 標籤內而不更改它 – azjezz