如何将 url 的一部分更改为 preg_replace?
how change part of url by preg_replace?
我正在尝试将 html 的所有链接更改为 php preg_replace。所有的uris都有以下形式
test.com/item/16
我想改成:
test.com/z/item/16
我尝试了以下方法,但 returns 没有任何变化:
$links = 'http://test.com/item/16';
preg_replace("/item","z/item",$links);
echo $links;
// output >>> http://test.com/z/item/16
正如@nickb 指出的那样,您必须使用定界符,即 /your_regular_expression/
。 /
是正则表达式的标准分隔符,因此,它是一个特殊字符,您必须使用反斜杠 \/
转义要匹配的 /
:
preg_replace("/\/item/","z/item",$links);
但幸运的是,您可以选择自己的分隔符,例如 #
,因此无需转义 /
:
preg_replace("#/item#","z/item",$links);
这样做:
<?php
$links = 'http://test.com/item/16';
$a = preg_replace("/item/","z/item",$links);
echo $a;
preg_replace 不会更改输入字符串,而是 returns 修改后的字符串....存储在 $a 变量中..
您需要分隔符并将 preg_replace 的 return 设置为变量
$links = 'http://test.com/item/16';
$links = preg_replace('/\/item/','/z/item',$links);
echo $links;
但是,为什么不在这种情况下只使用 str_replace?
所提供答案的问题是,如果 URL 中有多个 /item 实例,所有实例都将被替换,例如 URL,如:
http://items.domain.com/item/16
会搞砸,尝试只修改路径:
$path = parse_url( $url, PHP_URL_PATH );
$url = str_replace( $path, '/z'.$path, $url );
我正在尝试将 html 的所有链接更改为 php preg_replace。所有的uris都有以下形式
test.com/item/16
我想改成:
test.com/z/item/16
我尝试了以下方法,但 returns 没有任何变化:
$links = 'http://test.com/item/16';
preg_replace("/item","z/item",$links);
echo $links;
// output >>> http://test.com/z/item/16
正如@nickb 指出的那样,您必须使用定界符,即 /your_regular_expression/
。 /
是正则表达式的标准分隔符,因此,它是一个特殊字符,您必须使用反斜杠 \/
转义要匹配的 /
:
preg_replace("/\/item/","z/item",$links);
但幸运的是,您可以选择自己的分隔符,例如 #
,因此无需转义 /
:
preg_replace("#/item#","z/item",$links);
这样做:
<?php
$links = 'http://test.com/item/16';
$a = preg_replace("/item/","z/item",$links);
echo $a;
preg_replace 不会更改输入字符串,而是 returns 修改后的字符串....存储在 $a 变量中..
您需要分隔符并将 preg_replace 的 return 设置为变量
$links = 'http://test.com/item/16';
$links = preg_replace('/\/item/','/z/item',$links);
echo $links;
但是,为什么不在这种情况下只使用 str_replace?
所提供答案的问题是,如果 URL 中有多个 /item 实例,所有实例都将被替换,例如 URL,如:
http://items.domain.com/item/16
会搞砸,尝试只修改路径:
$path = parse_url( $url, PHP_URL_PATH );
$url = str_replace( $path, '/z'.$path, $url );