2012-11-23 3 views
0

여러 도시 이름을 가져 오는 쿼리가 있습니다. 각 링크가 연결되어 있어야합니다. 링크는 다음과 같습니다. www.sitename.com/city-new-yorkURL을 만들려면 공간을 제거해야합니까?

문제는 이름을 링크로 설정하면 ... "뉴욕"과 같은 일부 도시에는 공간이 있으며 URL이 제대로 작동하지 않습니다. 어떻게 이름 안에 공백이 "-"로 바뀌어 "city-new-york"을 읽을 수 있도록 만들 수 있습니까? 지금은이 코드가 있지만 "city-new 뉴욕 "또한

<?php foreach ($cities as $city):?> 
<li> 
<a href="city-<?php echo $city['name']; ?>"> 
<?php echo $city['name']; ?> 
</li> 
<?php endforeach;?> 

은, 난 그냥 수 없습니다 ... 나는 그것이 기존 스크립트의 일부이기 때문에, 이런 식으로해야 할, 선택의 여지가 없어 것을 ... 추가해야 db 내부에 URL을위한 별도의 열을 추가하기 만하면됩니다.

+0

단지 ['urlencode()'] (http://php.net/manual/de/function.urlencode.php)을 사용하십시오. 공백을 "-"로 바꿀 필요가 없습니다 – Raziel

답변

0

str_replace 기능을 사용하면 문자열의 문자를 대체하고 strtolower 모든 일을 소문자로 만들 수 있도록 다음 urlencode 기능

<?php foreach ($cities as $city):?> 
<li> 
<a href="city-<?php echo strtolower(str_replace(' ', '-', $city['name'])); ?>"> 
<?php echo $city['name']; ?> 
</li> 
<?php endforeach;?> 

http://php.net/manual/en/function.str-replace.php

http://php.net/manual/en/function.strtolower.php

+0

절대적으로 훌륭합니다! 내가 필요로했던 것, 고맙습니다! – Debrah

1

체크 아웃. 간단히 말해, 공백뿐만 아니라 많은 문자를 인코딩해야합니다.

-_를 제외한 모든 영숫자가 아닌 문자가있는 문자열을 반환합니다. 은 백분율 (%) 부호 다음에 두 자리 16 진수 과 공백 (+)으로 인코딩 된 공백으로 대체되었습니다. 그것은 WWW 양식에서 게시 된 데이터를 인코딩하는 것과 같은 방식으로 인코딩, 즉 서버가 디코딩 것 응용 프로그램/x-www-form-urlencoded를 매체 유형

주에서와 같은 방법입니다 매개 변수를 자동으로. 위 코드는 HTTP 요청을 인코딩합니다.

관련 문제