모든 문자열을 으로 변환하는이 javascript 함수는 완벽한 슬러그 (제 의견으로는)입니다. 나는 PHP로 변환 할 필요가 Javascript에서 PHP로 변환 함수
function slugGenerator(str) {
str = str.replace(/^\s+|\s+$/g, '');
str = str.toLowerCase();
var from = "àáäâèéëêìíïîòóöôùúüûñç·/_,:;";
var to = "aaaaeeeeiiiioooouuuunc------";
for (var i=0, l=from.length ; i<l ; i++) {
str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
}
str = str.replace(/[^a-z0-9 -]/g, '').replace(/\s+/g, '_').replace(/-+/g, '-');
return str;
}
, 나는 시도하고 결과는 다음과 같습니다
function slugGenerator($str) {
$str = preg_replace('/^\s+|\s+$/g', '', $str);
$str = strtolower($str);
$from = "àáäâèéëêìíïîòóöôùúüûñç·/_,:;";
$to = "aaaaeeeeiiiioooouuuunc------";
for ($i = 0, $l = strlen($from); $i<$l ; $i++) {
$str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
}
$str = preg_replace('/[^a-z0-9 -]/g', '', $str)
$str = preg_replace('/\s+/g', '_', $str)
$str = preg_replace('/-+/g', '-', $str);
return $str;
}
내가 루프이 문제를했습니다 :
for ($i = 0, $l = strlen($from); $i<$l ; $i++) {
// This string
$str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
}
내가했습니다 PHP로 변환하는 방법에 대한 아이디어가 아니라 누군가 그것을 변환하려고 할 수 있습니까?
해결책 : 가 strtr_unicode 기능을 추가하고이 스크립트를 사용 :
function slugGenerator($str) {
$str = preg_replace('/^\s+|\s+$/', '', $str);
$str = strtolower($str);
$from = "àáäâèéëêìíïîòóöôùúüûñç·/_,:;";
$to = "aaaaeeeeiiiioooouuuunc------";
$str = strtr_unicode($str, $from, $to);
$str = preg_replace(
array("~[^a-z0-9 -]~i", "~\s+~", "~-+~"),
array("", "_", "-"),
$str
);
return $str;
}
여기에 누락 된 자료가 있습니까? 왜 당신이 정규식을 바꿀 때 정규 표현식을 만드는 이유는 무엇입니까? 'str.replace ([i]에서 [i]로)'는 충분하지 않아야합니까? – kjetilh
PHP의'str_replace()'를 사용하십시오. 정규 표현식은 필요 없습니다. 배열을 입력으로 받아 들여'$ from'을'explode()'하고'str_replace()'에 넘깁니다. – gronostaj
@kjetilh 아니요. 정규 표현식 및 전역 플래그가 없으므로 문자의 첫 번째 문자 만 바꿉니다. 그리고 자바 스크립트에서는 표준이 아니기 때문에 []를 사용하여 문자열에서 문자를 가져 오는 것은 구형 브라우저에서는 작동하지 않습니다. –