2014-06-24 108 views
-5

我有一個文本。在字符串中添加文本PHP

$text='userpics/115/X3WGOC0009JA.jpg'; 

我想補充一個字母pX3WGOC0009JA.jpg,所以我的輸出將是

$text='userpics/115/pX3WGOC0009JA.jpg'; 
        ---^ 

我是新來的PHP,所以我真的不知道去嘗試一下,我希望你可以引導我朝着正確的方向發展

+1

分享您的嘗試。 –

+1

既然你沒有關於字符串是什麼,哪些部分是固定的任何規格,答案可能還有是:'$文字= str_replace函數(「userpics/115/X3WGOC0009JA.jpg」,「userpics/115/pX3WGOC0009JA .jpg',$ text);' – GolezTrol

回答

0

你可以通過斜線以單向爆炸。

$exploded_text = explode('/', $text); 
$new_text = $exploded_text[0] . $exploded_text[1] . 'p' . $exploded_text[2]; 

這不是最好的方法,但它會工作。

+0

可能是正確的,誰知道。 – GolezTrol

+0

這不是要走的路!我不會downvote,因爲它是一種工作方法,並用'爆炸()'一個簡單的例子,但從來沒有使用陣列功能,其中簡單的字符串函數足夠 – Martijn

+0

是啊,我在想** ** SUBSTR,但Op注視就像他想要動態地做到這一點一樣,我們永遠不會知道弦是多久,所以我這樣做。 @Martijn –

0

首先,我會用strrpossubstr得到的文件名:

$text = 'userpics/115/X3WGOC0009JA.jpg'; 
$prepend_filename = 'p'; 

$last_slash_pos = strrpos($text, '/'); 

if ($last_slash_pos === false) throw new Exception('No slashes found'); 

$path = substr($text, 0, $last_slash_pos); 
$filename = substr($text, $last_slash_pos + 1); // Add one to skip slash 

然後你就可以添加p使用這個(如$prepend_filename指定):

$new_path = $path . DIRECTORY_SEPARATOR . $prepend_filename . $filename; 
+1

哦親愛的上帝,死?!那裏?! – Martijn

+1

我最喜歡使用模具報價()「 如果超市冷櫃壞了,誰想要購買的一桶冰激凌,客戶不希望被踢出建設。」 – Halfwarr

+0

我取代''有一個例外 – ub3rst4r

0

有一個函數,substr_replace(),它可以在你想要的點插入一個字符串
我們結合這與strRpos(),我們可以用它來找到第一個斜槓,展望REVERSE

$string = substr_replace($string, 'p', strrpos($string, '/')+1); 

這將在$string插入'p'。在'/'的位置$string。 +1將「光標」更正爲斜線後面的字符。


爲什麼不使用爆炸函數?
很簡單:那些很慢。像strpos()substr_replace()這樣的字符串函數非常快,特別是對於小字符串。
數組在php中慢得多,所以除非必須,否則不要去那裏。對於簡單的字符串操作,你應該使用簡單的字符串函數(聽起來很容易,當你把它放在那裏不?)。

在一個簡單的測試我爲基準等user3758531的VS字符串變體等礦井爆炸變體:
100.000嘗試與陣列1.5
100.000嘗試與字符串0.9

在這種情況下,用這一行動時間並不重要。但是,在整個網站中應用這種思維方式,你會注意到它正在加速/放慢速度。

0

基於他的問題,我認爲所有他想要做的是:

$text='userpics/115/'.'p'.'X3WGOC0009JA.jpg'; 
+0

我懷疑這很容易,在這種情況下,您可以輕鬆地將字符串添加到原始字符串中 – Martijn

+0

@Martijn他在過去的2 3中的其他問題幾天表明他剛剛開始學習PHP。所以我想,這可能是他不知道的。 – shahharsh2603

0

你試過只設置你的變量和串聯,如果你這樣做了一堆。

$p = 'p'; 

$new = "userpics/115/" . $p . "X3WGOC0009JA.jpg"; 
+0

他說他有全部的字符串,我懷疑他可以在那裏分裂它,我認爲分裂是開始的問題 – Martijn