2016-01-21 5 views
-1
<table border="1"> 
    <tr> 
    <th>id</th> 
    <th>filepath</th> 
    </tr> 
    <tr> 
    <th>1</th> 
    <th>uploads/1233/a.jpg</th> 
    </tr> 
    <tr> 
    <th>2</th> 
    <th>uploads/1213/b.jpg</th> 
    </tr> 
    <tr> 
    <th>3</th> 
    <th>uploads/1243/c.jpg</th> 
    </tr> 
    <tr> 
    <th>4</th> 
    <th>uploads/1234/d.jpg</th> 
    </tr> 
    <tr> 
    <th>5</th> 
    <th>uploads/1273/e.jpg</th> 
    </tr> 
</table> 

id и filepath приходят из таблицы MySQL. Я хочу заменить числовое значение между папкой uploads и именем изображения.Заменить текст с середины строки

Как это сделать в mysql или php?

+0

Опишите пожалуйста свое требование. _I хочу после загрузки папки и перед файлом изображения? Есть ли смысл? –

+0

[Это может помочь вам] (http://stackoverflow.com/questions/9261713/regex-strip-out-text-between-first-and-second-forward-slashes) –

+0

это полная загрузка пути/1273/e .jpg ??? и вы хотите удалить числовое значение? исправьте меня ... – devpro

ответ

1

попробовать этот пример:

<?php 
$str = "uploads/1234/d.jpg"; 
$strArray = explode("/", $str); 
$strOutput = $strArray[0]."/".$strArray[2]; 
echo $strOutput; 
?> 

В MySQL, вы можете попробовать что-то вроде этого:

DELIMITER $$ 

CREATE FUNCTION customise_str(str_input varchar) RETURNS VARCHAR(100) 
    DETERMINISTIC 
BEGIN 
    DECLARE COUNT INT DEFAULT 9; 

    WHILE COUNT > 0 DO 
SET str_input = REPLACE(str_input, COUNT, ""); 
    SET COUNT = COUNT - 1; 
    END WHILE; 

RETURN (str_input); 
END $$ 
DELIMITER ;; 


update table_name set fielname = customise_str(fielname); 

Я не пробовал этот код.

, если вы не знаете, как создавать хранимые функции, эти ссылки могут быть полезны для вас:

http://www.mysqltutorial.org/mysql-stored-function/

https://dev.mysql.com/doc/refman/5.7/en/while.html

+0

Спасибо за ваш ответ. Есть ли способ удалить все числовое значение из поля таблицы mysql и тип значений в поле «uploads/1235/a.jpg "," uploads/1270/b.jpg "и т. Д., Но я хочу удалить числовое значение из значения поля, такого как« uploads/a.jpg »,« uploads/b.jpg »и т. Д. , –

+0

Я обновил свой ответ. Для этого вам нужно определить свою собственную функцию в mysql. –

+0

, если мой ответ сработал для вас, пожалуйста, примите его. –

1

Попробуйте эту функцию preg_replace PHP.

$filepath = "uploads/1233/a.jpg"; 
echo preg_replace('/(?<=\/)[1-9][0-9]*?(?=\/)/', "replacement_string_for_the_numeric_value", $filepath); 
Смежные вопросы