PHP - 删除字符串的最后一部分 - preg_replace

时间:2013-05-17 14:44:50

标签: php preg-replace

我需要删除"from products where id = 153183"。 id可以改变,所以我需要使用preg_replace来删除单词“from”之后的所有内容,然后可能使用str_replace来删除。我有下面但这只会删除字符串中的最后一个字。任何人都可以建议我需要添加什么吗?

//doesn't work

$str = "select id, productdescription, category, price, code, manufacturer, categoryid from  products where id = 153183";

$new_str = preg_replace('/from$/', '', $str);

6 个答案:

答案 0 :(得分:2)

你可以这样做:

$new_str = stristr($str, " from ", true);

由于来自是SQL中的reserved word,所以在没有引号或反引号的情况下,你无法在其他地方找到这个词(所以我在之前和之后添加了一个空格)。

它返回“from”字之前的字符串。

strstr 用于区分大小写的搜索。

更新:正则表达式(此问题并非真正需要):

$str = 'select id, productdescription, category, price, code, manufacturer, categoryid from  products where id = 153183';

preg_match('/(.*)\sfrom\s.*$/i', $str, $matches); // i for the insensitive case search

$new_str = $matches[1]; // Contains what you want

答案 1 :(得分:1)

我对你的问题感到有点困惑,这应该让你顺利。

<?php
$sql = 'SELECT * FROM products WHERE id = 153183';
$sql = preg_replace('~from products where id = [0-9]+$~i', '', $sql);
echo $sql;
/*
    SELECT * 
*/

答案 2 :(得分:0)

您可能需要/from.*$//from.*/

之类的内容

答案 3 :(得分:0)

您可以使用简单的str_replace。不知道你是如何获得id的,因为它可以改变,我假设你有一个变量。

$str = "select id, productdescription, category, price, code, manufacturer, categoryid from  products where id = 153183";
$new_str = str_replace("from products where id = " . $id, "", $str)

答案 4 :(得分:0)

$string = "select id, productdescription, category, price, code, manufacturer, categoryid from  products where id = 153183";
$part1 = substr("$string",0, strrpos($string,'from  products where id '));
var_dump($part1);

由于字符串的大部分是静态的,因此您可以使用直到违规部分的子字符串。

结果:

string(79) "select id, productdescription, category, price, code, manufacturer, categoryid "

答案 5 :(得分:0)

preg_replacestr_replace的组合也有效:

<?php

$str = "select id, productdescription, category, price, code, manufacturer, categoryid from  products where id = 153183";
$id_removed =  preg_replace('/\d/', '', $str); //remove dynamic product id
$new_str = str_replace("from  products where id =",'', $id_removed);
echo $new_str;


?>