首页 > 解决方案 > 如何从 PHP 变量的末尾到第一个空格删除所有字符?

问题描述

我想删除 PHP 中字符串变量的最后一个单词。我尝试按照以下代码进行操作:https ://stackoverflow.com/a/29428662/10490051 。但这并不能解决我的问题。

我想将它用于 SQL 参数:

$sql_request = "SELECT fullname FROM names WHERE lastname='johnson' and city='oxford' ";


$sql_request = preg_replace('/\W\w+\s*(\W*)$/', '$1', $sql_request);

echo $sql_request;     

具体来说,我需要删除整个最后一个参数:city='oxford'。(我需要从头到尾删除所有空格)但是我的代码结果将是:

SELECT fullname FROM names WHERE lastname='johnson' and city='

但我需要这个:

SELECT fullname FROM names WHERE lastname='johnson' and

那么如何删除整个最后一个参数,而不仅仅是其中的一部分呢?谢谢你。

标签: phpstringvariableschar

解决方案


如果你不想和 REGEX Devil 共舞,你可以使用更简单的机制

$sql_request = "SELECT fullname FROM names WHERE lastname='johnson' and city='oxford' ";

$sql_request = trim($sql_request);
$pos = strrpos($sql_request, ' ');
$sql_request = substr($sql_request, 0, $pos);   
echo $sql_request;

结果

SELECT fullname FROM names WHERE lastname='johnson' and

或将其全部包装成一行

$sql_request = substr( $sql_request, 0, strrpos(trim($sql_request), ' '));     
echo $sql_request;

根据评论中的问题更新

$pos = strrpos($sql_request, ' and');
$sql_request = substr( $sql_request, 0, $pos);   
echo $sql_request;

或将其全部包装成一行

$sql_request = substr( $sql_request, 0, strrpos($sql_request, ' and'));     
echo $sql_request;

推荐阅读