2015-11-08 39 views
0

其实我想从By删除所有内容,我的回答应该是在3月6日发布。我正在使用下面的代码。这是工作。但是如果在给定的字符串中没有By,那么问题有时会出现,那么echo值根本没有显示。php如何删除字符串后的任何内容如果只有

$s = 'Posted On March 6th By Cristiano'; 

$variable = substr($s, 0, strpos($s, "By")); 
echo $variable; 

$variable = strstr($s, 'By', true); 
echo $variable; 

回答

0

这里有三种方法你可以用。

$s = 'Posted On March 6th By Cristiano'; 
$approach1 = explode(' By', $s); 
echo $approach1[0]; 

或正则表达式:

echo preg_replace('/ By.*/', '', $s); 

你也preg_match使用。

preg_match('/(.*) By/', $s, $matches); 
echo $matches[1]; 

甚至preg_split(看不到的优势在这种情况下,虽然爆炸..)。

$four = preg_split('/ By/', $s); 
echo $four[0]; 
+0

正则表达式对于这样简单的事情来说是过度的,即使是preg_match手册页建议在这种情况下使用strpos – rjdown

+0

先生,它正在工作,但最后它显示了n –

+0

哦脱掉用于测试的'\ n' ..虽然如果在双引号应该给一个换行符。 – chris85

0

而不是使用SUBSTR内strpos的,只是把它分配给一个独立的变量,并检查它的值:

<?php 
$s = 'Posted On March 6th By Cristiano'; 
$by_start = strpos($s, "By"); 
$variable = $by_start === false ? $s : substr($s, 0, $by_start); 
echo $variable; 
+0

谢谢你的答案先生,我会尝试。 –

相关问题