2014-06-24 72 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