Удалить специальные символы из URL - PullRequest
1 голос
/ 22 апреля 2010

У меня есть база данных продуктов, и я пытаюсь отобразить их как чистые URL, ниже приведены примеры названий продуктов:

PAUL MITCHELL FOAMING POMADE (150ml)
American Crew Classic Gents Pomade 85g
Tigi Catwalk Texturizing Pomade 50ml

Что мне нужно сделать, это отобразить, как показано ниже в структуре URL:

www.example.com/products/paul-mitchell-foaming-gel(150ml)

Проблема в том, что я хочу сделать следующее:

1.  Remove anything inside parentheses (and the parentheses)
2.  Remove any numbers next to g or ml e.g. 400ml, 10g etc...

Я бился головой, пытаясь заменить различные струны, но не могу понять, как правильно, я был бы очень признателен за помощь.

Приветствия

Ответы [ 4 ]

3 голосов
/ 18 июля 2017

попробуйте это,

<?php
$url = 'http%3A%2F%2Fdemo.com';
$decodedurl= urldecode($url);
echo $decodedurl;
?
3 голосов
/ 22 апреля 2010
function makeFriendly($string)
{
    $string = strtolower(trim($string));
    $string = str_replace("'", '', $string);
    $string = preg_replace('#[^a-z\-]+#', '_', $string);
    $string = preg_replace('#_{2,}#', '_', $string);
    $string = preg_replace('#_-_#', '-', $string);
    return preg_replace('#(^_+|_+$)#D', '', $string);
}

эта функция поможет вам очистить URL. (также убирает цифры)

2 голосов
/ 22 апреля 2010
$from = array('/\(|\)/','/\d+ml|\d+g/','/\s+/');
$to = array('','','-');

$sample = 'PAUL MITCHELL FOAMING POMADE (150ml)';
$sample = strtolower(trim(preg_replace($from,$to,$sample),'-'));
echo $sample; // prints paul-mitchell-foaming-pomade
0 голосов
/ 22 апреля 2010

Попробуйте это:

trim(preg_replace('/\s\s+/', ' ', preg_replace("/(?:\(.*?\)|\d+\s*(?:g|ml))/", "", $input)));

// "abc (def) 50g 500 ml 3m(ghi)" --> "abc 3m"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...