Есть ли лучший способ, чем это для замены символов в строке? - PullRequest
3 голосов
/ 02 сентября 2010

Я работаю над своим URL, чтобы сделать его красивым.и вот логика, которую я придумал.

Теперь в URL-адресе я хочу добиться чего-то подобного.

http://domain.com/category/date/post-title

, для этого я сначала заполнил значение из базы данных, то есть дату и заголовок сообщениякак это

для даты:

$date = date("d", $row['timestamp']);
$month = date("m", $row['timestamp']);
$year = date("Y", $row['timestamp']);
$date_url = $date.$month.$year;

для заголовка:

$title = $row['title'];
$title_url = str_replace(" ", "-", $title);

теперь я создал гиперссылку, чтобы отправить ее на URL-адрес как этот.

<a href="news.php?id=<?php echo $id; ?>&cat=<?php echo 'news'; ?>&date=<?php echo $date_url; ?>&title=<?php echo $title_url; ?>"><img src="<?php echo 'admin-login/'.$pic_title; ?>"/></a>

Моя главная проблема - заголовок, который я заполняю значением из базы данных, можно ли использовать str_replace() для этого?или есть какой-то лучший способ?

я могу пойти куда-нибудь не так или это нормально, если продолжать эту логику?

спасибо ..

Ответы [ 4 ]

2 голосов
/ 02 сентября 2010

Вы не учитываете знаки препинания и другие специальные символы.

Вы можете сделать:

$from = array('/\W/','/-+/','/^-/','/-$/');
$to = array('-','-','','');
$title = preg_replace($from,$to,$title);

Это заменит любой символ без слова на -, заменит несколько последовательных -с одним -, а также удаляет ведущие и конечные -, если таковые имеются.

2 голосов
/ 02 сентября 2010

Использование:

$date = date("dmy", $row['timestamp'])
Для заголовка используйте preg_replace, чтобы удалить все недопустимые символы
$title = strtolower(preg_replace(array('/[^a-zA-Z0-9 -]/', '/[ -]+/', '/^-|-$/'), array('', '-', ''), $title));
1 голос
/ 02 сентября 2010
$title = preg_replace('/\W/', '-', $row['title']);
0 голосов
/ 02 сентября 2010

Вам необходимо очистить все специальные символы в заголовке, убедитесь, что все они удалены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...