gpt4 book ai didi

php - substr() 到 preg_replace() 匹配 php

转载 作者:搜寻专家 更新时间:2023-10-31 21:02:03 25 4
gpt4 key购买 nike

我在 PHP 中有两个函数,trimmer($string,$number)toUrl($string)。例如,我想将使用 toUrl() 提取的 url 修剪为 20 个字符。从 https://www.youtube.com/watch?v=HU3GZTNIZ6Mhttps://www.youtube.com/wa...

function trimmer($string,$number) {
$string = substr ($string, 0, $number);
return $string."...";
}

function toUrl($string) {
$regex="/[^\W ]+[^\s]+[.]+[^\" ]+[^\W ]+/i";
$string= preg_replace($regex, "<a href='\\0'>".trimmer("\\0",20)."</a>",$string);
return $string;
}

但问题是匹配返回的值 \\0 不是像 $url 这样的变量,它可以很容易地用函数 trimmer( )

问题是我如何将 substr() 应用到 \\0 这样的东西 substr("\\0",0,20)?

最佳答案

你要的是preg_replace_callback :

function _toUrl_callback($m) {
return "<a href=\"" . $m[0] . "\">" . trimmer($m[0], 20) ."</a>";
}
function toUrl($string) {
$regex = "/[^\W ]+[^\s]+[.]+[^\" ]+[^\W ]+/i";
$string = preg_replace_callback($regex, "_toUrl_callback", $string);
return $string;
}

另请注意(关于您的问题的旁注):

  1. 你有语法错误,'$regex' 不起作用(它们不会替换单引号字符串中的 var 名称)
  2. 您可能想要寻找更好的正则表达式来匹配 URL,您可以通过快速搜索找到很多这样的正则表达式
  3. 您可能希望通过 htmlspecialchars() 运行您的匹配项(主要是“&”的问题,但这取决于您如何转义字符串的其余部分。

编辑:应提问者的要求,使其对 PHP 4 更加友好。

关于php - substr() 到 preg_replace() 匹配 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40065095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com