substr() 到 preg_replace() 匹配 php
substr() to preg_replace() matches php
我在 PHP、trimmer($string,$number)
和 toUrl($string)
中有两个函数。例如,我想 trim 用 toUrl()
提取的 url 到 20 个字符。从 https://www.youtube.com/watch?v=HU3GZTNIZ6M
到 https://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;
}
但问题是匹配 return \0
的值不是像 $url
这样的变量,可以很容易地 trim 使用函数 [=20] =].
问题是我如何将 substr()
应用到 \0
这样的东西 substr("\0",0,20)
?
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;
}
另请注意(关于您的问题的旁注):
- 您有一个语法错误,'$regex' 不起作用(它们不会替换单引号字符串中的 var 名称)
- 您可能想要寻找更好的正则表达式来匹配 URL,您可以通过快速搜索找到很多这样的正则表达式
- 您可能希望 运行 通过 htmlspecialchars() 匹配(主要是“&”的问题,但这取决于您如何转义字符串的其余部分。
编辑:使其更加PHP 4 友好,由提问者请求。
我在 PHP、trimmer($string,$number)
和 toUrl($string)
中有两个函数。例如,我想 trim 用 toUrl()
提取的 url 到 20 个字符。从 https://www.youtube.com/watch?v=HU3GZTNIZ6M
到 https://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;
}
但问题是匹配 return \0
的值不是像 $url
这样的变量,可以很容易地 trim 使用函数 [=20] =].
问题是我如何将 substr()
应用到 \0
这样的东西 substr("\0",0,20)
?
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;
}
另请注意(关于您的问题的旁注):
- 您有一个语法错误,'$regex' 不起作用(它们不会替换单引号字符串中的 var 名称)
- 您可能想要寻找更好的正则表达式来匹配 URL,您可以通过快速搜索找到很多这样的正则表达式
- 您可能希望 运行 通过 htmlspecialchars() 匹配(主要是“&”的问题,但这取决于您如何转义字符串的其余部分。
编辑:使其更加PHP 4 友好,由提问者请求。