php で preg_replace() を使用してコンマ、スペース、ハイフンをアンダースコアに置き換える方法。
(i.e) http://test.com/test-one,two three to http://test.com/test_one_two_three
(i.e) http://test.com/test, new one to http://test.com/test_new_one
私はreg_expがとても苦手です
php で preg_replace() を使用してコンマ、スペース、ハイフンをアンダースコアに置き換える方法。
(i.e) http://test.com/test-one,two three to http://test.com/test_one_two_three
(i.e) http://test.com/test, new one to http://test.com/test_new_one
私はreg_expがとても苦手です
あなたの文字列:
$link = 'http://test.com/test-one,two three';
echo preg_replace('/[\s,-]+/', '_', $link);
$arr = array(",", " ", "-", "__");
echo str_replace($arr, "_", $link);
このような何かがそれを行う必要があります:
<?php
$subject = "http://test.com/test-one,two three";
echo preg_replace ("/[, -]/" , "_", $subject);
?>
PHPに追加したい機能のプレビューは次のとおりです。
function url_replace($url, $component, callable $callback)
{
$map = [
PHP_URL_SCHEME => 2,
PHP_URL_HOST => 4,
PHP_URL_PATH => 5,
PHP_URL_QUERY => 7,
PHP_URL_FRAGMENT => 9,
];
if (!array_key_exists($component, $map)) {
return $url;
}
$index = $map[$component];
if (preg_match('~^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?~', $url, $matches, PREG_OFFSET_CAPTURE) && isset($matches[$index])) {
$tmp = call_user_func($callback, $matches[$index][0]);
return substr_replace($url, $tmp, $matches[$index][1], strlen($matches[$index][0]));
}
return $url;
}
あなたの質問に答えると、次のようになります。
$url = 'http://test.com/test-one,two three';
echo url_replace($url, PHP_URL_PATH, function($path) {
return strtr($path, ', -', '___');
});
結果:
http://test.com/test_one_two_three
楽しみのために、次のものもありstrtr
ます。
strtr('http://test.com/test-one,two three', '-, ', '___');