Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP preg_用自定义URL替换古怪_Php_Preg Replace - Fatal编程技术网

PHP preg_用自定义URL替换古怪

PHP preg_用自定义URL替换古怪,php,preg-replace,Php,Preg Replace,我使用以下代码在标记后面添加标记 这就是它产生的输出: <a href="$link$/3/">Test Link</a> <a href="http://www.google.com/">Google</a><span>test</span> $url=preg_quote$url,“~”;美元符号通常被解释为:输入结束。$url=preg_quote$url,“~”;美元符号通常被解释为:输入结束。$在正则表达式中有特

我使用以下代码在标记后面添加标记

这就是它产生的输出:

<a href="$link$/3/">Test Link</a>
<a href="http://www.google.com/">Google</a><span>test</span>

$url=preg_quote$url,“~”;美元符号通常被解释为:输入结束。

$url=preg_quote$url,“~”;美元符号通常被解释为:输入结束。

$在正则表达式中有特殊含义。下线。您的表达式将按如下方式展开:

$html = preg_replace("~<a.*?href=\"$link$/3/\".*?>.*?</a>~i", "$0<span>test</span>", $html);

$在正则表达式中有特殊含义。下线。您的表达式将按如下方式展开:

$html = preg_replace("~<a.*?href=\"$link$/3/\".*?>.*?</a>~i", "$0<span>test</span>", $html);
$被视为特殊的正则表达式字符,需要转义。用于在将$url传递给preg_replace之前对其进行转义

$被视为特殊的正则表达式字符,需要转义。用于在将$url传递给preg_replace之前对其进行转义

只是有人是对的;如果要将特殊正则表达式字符解释为文字,则必须对其进行转义

在我看来,它也无法执行替换,因为它从未匹配

尝试替换此行:

$urls[] = '$link$/3/';
为此:

$urls[] = '$link/3/';
只是有人是对的;如果要将特殊正则表达式字符解释为文字,则必须对其进行转义

在我看来,它也无法执行替换,因为它从未匹配

尝试替换此行:

$urls[] = '$link$/3/';
为此:

$urls[] = '$link/3/';

正则表达式不用于解析HTMLregular表达式不用于解析HTMLD'oh。我完全相信我的美元符号与EOL/EOI相符。为了避免这个问题,我会避开他们。谢谢你的快速回复!哦。我完全相信我的美元符号与EOL/EOI相符。为了避免这个问题,我会避开他们。谢谢你的快速回复!这是不可能的,因为这是我的脚本得到的动态输入。我只是将其设置为静态以显示其失败的位置。您的意思是说$link应该引用一个变量吗?在这种情况下,您必须将$link变量连接到“/3/”,或者将整个变量用双引号而不是单引号括起来$URL[]=$link/3/;我的意思是说那句话是100%正确的。这是我从数据库中得到的数据。我只是用单引号来说明。我现在使用preg_quote让它工作得很好。这是不可能的,因为这是我的脚本得到的动态输入。我只是将其设置为静态以显示其失败的位置。您的意思是说$link应该引用一个变量吗?在这种情况下,您必须将$link变量连接到“/3/”,或者将整个变量用双引号而不是单引号括起来$URL[]=$link/3/;我的意思是说那句话是100%正确的。这是我从数据库中得到的数据。我只是用单引号来说明。我现在用preg_quote让它工作得很好。
$urls[] = '$link/3/';