0

我需要删除"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);
4

6 回答 6

2

你可以这样做:

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

由于from是 SQL 中的保留字,如果没有引号或反引号,您无法在其他地方找到这个字(所以我在前后添加了一个空格)。

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

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
于 2013-05-17T14:50:08.240 回答
1

你可能想要类似/from.*$/或简单的东西/from.*/

于 2013-05-17T14:47:30.493 回答
1

我对您的问题感到有些困惑,但这应该可以让您继续前进。

<?php
$sql = 'SELECT * FROM products WHERE id = 153183';
$sql = preg_replace('~from products where id = [0-9]+$~i', '', $sql);
echo $sql;
/*
    SELECT * 
*/
于 2013-05-17T14:49:57.943 回答
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)
于 2013-05-17T14:50:24.920 回答
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 "
于 2013-05-17T14:54:34.550 回答
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;


?>
于 2013-05-17T15:04:39.893 回答