php如何只删除字符串之后的任何内容

时间:2015-11-08 17:30:47

标签: php html regex

其实我想删除By中的所有内容,我的答案应该发布于3月6日。我使用以下代码。这是工作。但问题有时候,如果给定字符串中没有By,则回显值根本不显示。

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

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

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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];